printf 等待输入
Printf waiting for enter
int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
使用这段代码,printf 一直在等待,直到我按下回车键,然后像这样
同时打印所有连续的 ss 值
。有人可以解释这种行为吗?
printf
不是等待,而是 getchar
。 getchar
在后台使用缓冲区。当该缓冲区为空时,getchar
将从标准输入读取 1 行,然后 然后 return 第一个字符。如果它不为空,它将立即return缓冲区中的下一个字符。
这意味着 getchar
将在您第一次调用它时等待。因此,在您按下 enter
之前,您的 printf
永远不会执行
int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
使用这段代码,printf 一直在等待,直到我按下回车键,然后像这样
同时打印所有连续的 ss 值。有人可以解释这种行为吗?
printf
不是等待,而是 getchar
。 getchar
在后台使用缓冲区。当该缓冲区为空时,getchar
将从标准输入读取 1 行,然后 然后 return 第一个字符。如果它不为空,它将立即return缓冲区中的下一个字符。
这意味着 getchar
将在您第一次调用它时等待。因此,在您按下 enter
printf
永远不会执行