Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 正在等待输入的Printf_C_Printf_Getchar - Fatal编程技术网

C 正在等待输入的Printf

C 正在等待输入的Printf,c,printf,getchar,C,Printf,Getchar,有了这段代码,printf将一直等待,直到我按下enter键,然后同时打印所有连续的ss值,如图所示 。有人能解释一下这种行为吗?printf没有等待,而是getchargetchar在场景后面使用缓冲区。当该缓冲区为空时,getchar将从stdin读取一行,然后返回第一个字符。如果不为空,它将立即从缓冲区返回下一个字符 这意味着getchar将在您第一次调用它时等待。因此,您的printf永远不会执行,除非您按enterprintf正在等待,而是getchargetchar在场景后面使用缓

有了这段代码,printf将一直等待,直到我按下enter键,然后同时打印所有连续的ss值,如图所示


。有人能解释一下这种行为吗?

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);
}