getchar拓展

简介: getchar拓展
#include<stdio.h>
int main()
{
   int ch=0;
   while((ch=getchar())!=EOF)
     putchar(ch);
   return 0;
}
//这里的代码适当的修改是可以用来清理缓冲区的

getchar--读取一个字符


putchar--输出/打印一个字符


getchar读取到字符的时候返回的是字符的ASCII码值


如果读取失败,返回的是EOF(-1)


所以上述代码的意思是getchar先读取一个字符放到ch里面去,如果这个字符不等于EOF,就进入循环,打印这个字符。当getchar读到文件末尾或者结束时,它会返回一个EOF,此时结束循环。

image.png

image.png

image.png

scanf和getchar都是输入函数,它们都是从键盘上来读取我们的数据,但它们并不是直接从键盘上来读取我们的数据,它们和键盘之间有一个区域叫缓冲区。

输入函数先来看缓冲区中是否有数据,如果有,它直接就拿走了,不需要从键盘输入,如果缓冲区什么都没有,则需要从键盘输入,再拿走。

image.png

image.png

以上是本人手写的一点内容

意思是输入123456这串密码,可以用scanf和getchar这两个函数来完成任务

但是,如果输入的密码含有空格呢?这又是另外一种情况了

image.png

首先,由scanf读取缓冲区中的数据,scanf默认读取到空格就结束了

所以,scanf只读取了123456,缓冲区中还剩下 (空格)789\n。

image.png

所以最后的代码为这样

#include<stdio.h>
int main()
{
   printf("请输入密码:>");
   char password[20]={0};
   scanf("%s",password);
   //把缓冲区中的内容全读走
   while(getchar()!='\n')
   {
     ;
   }
   printf("请确认密码(Y/N):>");
   int ch=getchar();
   if(ch='Y')
   {
      printf("确认成功\n");
   }
   else
   {
      printf("确认失败\n");
   }
   return 0;
}

下面还有一段代码

#include<stdio.h>
int main()
{
   char ch='\0';
   while((ch=getchar())!=EOF)
   {
      if(ch<'0'||ch>'9')
         continue;
      putchar(ch);
   }
   return 0;
}

这段代码的作用是:只打印数字字符,跳过其他字符。

好了,今天的内容就先到这里,好久没写博客了,以后还是得坚持一个星期写一篇。

我们一起加油 冲冲冲!!!

相关文章
|
3月前
|
存储 缓存 编译器
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(下篇)
scanf处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。
168 2
|
3月前
|
存储 C语言
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(上篇)
printf 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。
80 1
|
6月前
|
存储 编译器 C语言
函数解剖——深挖getchar()与putchar()
函数解剖——深挖getchar()与putchar()
|
6月前
|
Windows
函数解剖——深挖printf()与scanf()
函数解剖——深挖printf()与scanf()
函数解剖——深挖printf()与scanf()
|
6月前
|
存储 C语言
爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗
爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗
102 1
scanf和getchar区别
scanf和getchar区别
172 0
三种方法模拟实现库函数strlen,加深对strlen的理解
三种方法模拟实现库函数strlen,加深对strlen的理解
|
数据安全/隐私保护 C语言
【C语言】getchar和putchar函数详解:字符输入输出的利器
【C语言】getchar和putchar函数详解:字符输入输出的利器
690 0
|
安全 数据安全/隐私保护 C语言
【C语言】scanf getchar gets函数详解,带你摆脱窘境
【C语言】scanf getchar gets函数详解,带你摆脱窘境
124 0
|
编译器
更深度了解getchar和putchar现象
更深度了解getchar和putchar现象
111 0