int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
使用此代码,printf正在等待,直到我按下enter然后同时打印所有顺序ss值,如此
。有人可以解释这种行为吗?
答案 0 :(得分:5)
printf
并未等待它getchar
。 getchar
使用场景后面的缓冲区。当该缓冲区为空时,getchar
将从标准输入读取1行,然后返回第一个字符。如果它不为空,它将立即从缓冲区返回下一个字符。
这意味着getchar
会在您第一次调用它时等待。因此,在您按printf
enter
永远不会被执行