C 正在等待输入的Printf
有了这段代码,printf将一直等待,直到我按下enter键,然后同时打印所有连续的ss值,如图所示C 正在等待输入的Printf,c,printf,getchar,C,Printf,Getchar,有了这段代码,printf将一直等待,直到我按下enter键,然后同时打印所有连续的ss值,如图所示 。有人能解释一下这种行为吗?printf没有等待,而是getchargetchar在场景后面使用缓冲区。当该缓冲区为空时,getchar将从stdin读取一行,然后返回第一个字符。如果不为空,它将立即从缓冲区返回下一个字符 这意味着getchar将在您第一次调用它时等待。因此,您的printf永远不会执行,除非您按enterprintf正在等待,而是getchargetchar在场景后面使用缓
。有人能解释一下这种行为吗?
printf
没有等待,而是getchar
getchar
在场景后面使用缓冲区。当该缓冲区为空时,getchar
将从stdin读取一行,然后返回第一个字符。如果不为空,它将立即从缓冲区返回下一个字符
这意味着
getchar
将在您第一次调用它时等待。因此,您的printf
永远不会执行,除非您按enter
printf
正在等待,而是getchar
getchar
在场景后面使用缓冲区。当该缓冲区为空时,getchar
将从stdin读取一行,然后返回第一个字符。如果不为空,它将立即从缓冲区返回下一个字符
这意味着
getchar
将在您第一次调用它时等待。因此,除非您按下enter
printf与等待行为无关,否则您的printf
永远不会执行。。。它是getchar()。但是首先尝试清理项目并重建它…然后重试。有没有办法禁用getchar()的输入缓冲区流?printf与等待行为无关。。。它是getchar()。但是,首先尝试清理项目并重建它…然后重试。有没有办法禁用getchar()的输入缓冲区流?这与我有什么关系?每次需要打印内容时都必须按enter键。我不明白你的意思explanation@DogusUral这意味着循环条件下的getchar
在您按enter键之前一直处于阻塞状态,而printf
在您按enter键之前永远不会执行。这与我每次需要打印内容时都必须按enter键有什么关系。我不明白你的意思explanation@DogusUral这意味着循环条件下的getchar
在按enter键之前一直处于阻塞状态,而printf
在按enter键之前永远不会执行。
int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}