int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
有了这个代码,printf的等待直到我按下输入则在该printf的等待输入
打印所有在同一时间顺序SS值等。有人可以解释这种行为吗?
int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
有了这个代码,printf的等待直到我按下输入则在该printf的等待输入
打印所有在同一时间顺序SS值等。有人可以解释这种行为吗?
printf
而不是等待它是getchar
。 getchar
在场景后面使用缓冲区。当该缓冲区为空时,getchar
将从标准输入读取1行,并且然后返回第一个字符。如果它不为空,它将立即从缓冲区返回下一个caracter。
这意味着getchar
将在您第一次致电时等待。因此,您的printf
永远不会执行,直到您按enter
这与我必须按什么输入每次我想要打印的东西有什么关系。我不明白你的解释 –
@DogusUral这意味着你的循环条件中的'getchar'被阻塞,直到你按下回车键,'printf'才会被执行,直到你按下回车键。 – litelite
printf与等待行为无关......它是getchar()。但首先尝试清理你的项目并重建它...然后再试一次。 –
有没有办法为getchar()禁用输入缓冲流? –