最近在用c语言写代码,经常使用getchar()函数,但感觉输出的结果和自己的预期不一样,最后发现是getchar()在使用的时候,忽略了一个重要的细节。现在把它写出来,供大家参考,也方便以后自己编写程序。
getchar()是从键盘中读取字符,它一次接受一个字符;如果一次敲的字符多于一个,包括回车字符,它会将剩下的字符存入缓存中,下次继续执行。
例如下面的代码所示:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int seed,i;
char c;
seed = time(NULL);
srand(seed);
for (i =0;i<10;i++)
{
printf("%d\n",rand());
}
printf("end!\n");
while(1)
{
c = getchar();
if (c=='\n')
printf("input is the key 'Enter'!");
else
if (c=='y')
{
for (i =0;i<10;i++)
{
printf("%d\n",rand());
}
printf("End!\n");
}
else
{
printf("Exit!\n");
break;
}
}
return 0;
}
第一次输入:y和回车键;
显示10个随机数,并显示“Input is the key ‘Enter’!”
第二次输入:'yn'
输出是10个书技术,并显示“Exit”
这说明getchar()一次只读取一个输入,其它的输入会保存下来,之后执行的过程中会继续执行保存下来的字符。