C 语言 getchar() 和 回车的问题~!!

刚才看书 有段程序
int main(){
char a,b,c;

a = getchar();
b = getchar();
c = getchar();

putchar(a);
putchar(b);
putchar(c);
putchar('\n');

system("pause");
return 0;

}

我输入一个 a 然后输入两个回车,就直接给我输出了, 不是说getchar会接受回车么。 应该是我输入3个回车,才会做输出啊。

为什么2个回车就输出了。

用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(需要注意的是:回车字符也放在缓冲区中.)
当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.且将用户输入的字符回显到屏幕.
如用户在按回车之前输入了不止一个字符(回车也算),其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键(所以第二次读取到回车字符才算读完缓冲区),而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
最后第三个getchar()只读到回车。

所以最终结果是三个字符,第一个是a,第二个是回车,第三个也是回车。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-06
对,getchar()只接受一个字符,可是你有个两层循环,中间一个getchar(),一个putchar(),在输
入一个的时候就输出一个了。而且n在前面宏定义的时候就已经被定义好了,只能接受0-6共计六个字符,注意这里的空格也算一个字符的!如果要接受一个字符串,可用主库中的函数gets()
第2个回答  2013-11-20
回车键 输出就是换行,也即是'\n'
实际他是输出了。。只是你没看到而已》
第3个回答  2013-11-20
第一个 接收a
第二个吸收回车
第三个还是回车
不就三个输出了嚒
相似回答