getchar
的功能
它的作用是从
stdin
流中读入一个字符,也就是说,如果stdin
有数据的话不用输入它就可以直接读取了,第一次getchar()
时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()
再执行时就会直接从缓冲区中读取了。
所以我们知道他的功能和
scanf
的功能差不多,都是从stdin
上读取字符,区别就是getchar
上我们读取一个字符。
例题判断字母
#include <stdio.h>
int main() {
int a;
while(scanf("%d",&a)!=EOF)
{
if(a>='A'&&a<='z')
{
printf("YES");
}
else
{
printf("NO");
}
}
return 0;
}
我们发现用
scanf
过不去,因为是多组样例,进行当我们进行完一个字符后,我们会输入换行或者回车,其实这也相当于一个字符,而我们的scanf就将这个字符读取了,所以导致我们运行超时,所以我们要将这个换行或者更回车字符读取,我们才可以进行下一个判断,所以我们就可以用getchar
将这个字符读取掉。
#include <stdio.h>
int main() {
int a;
while((a=getchar())!=EOF)
{
getchar();
if(a>='A'&&a<='z')
{
printf("YES");
}
else
{
printf("NO");
}
}
return 0;
}
使用
getchar()
将其回车吸收掉就可以进行下一个字符的判断。
getchar()
是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab
)
-
1.使用下面的语句清除回车:
while(getchar()!='\n');
2.用getche()
或getch()
代替getchar()
,其作用是从键盘读入一个字符(不用按回车)
getchar()
使用不方便,解决方法: