#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,此时结束循环。
scanf和getchar都是输入函数,它们都是从键盘上来读取我们的数据,但它们并不是直接从键盘上来读取我们的数据,它们和键盘之间有一个区域叫缓冲区。
输入函数先来看缓冲区中是否有数据,如果有,它直接就拿走了,不需要从键盘输入,如果缓冲区什么都没有,则需要从键盘输入,再拿走。
以上是本人手写的一点内容
意思是输入123456这串密码,可以用scanf和getchar这两个函数来完成任务
但是,如果输入的密码含有空格呢?这又是另外一种情况了
首先,由scanf读取缓冲区中的数据,scanf默认读取到空格就结束了
所以,scanf只读取了123456,缓冲区中还剩下 (空格)789\n。
所以最后的代码为这样
#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; }
这段代码的作用是:只打印数字字符,跳过其他字符。
好了,今天的内容就先到这里,好久没写博客了,以后还是得坚持一个星期写一篇。
我们一起加油 冲冲冲!!!