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 不是等待,而是 getchargetchar 在后台使用缓冲区。当该缓冲区为空时,getchar 将从标准输入读取 1 行,然后 然后 return 第一个字符。如果它不为空,它将立即return缓冲区中的下一个字符。

这意味着 getchar 将在您第一次调用它时等待。因此,在您按下 enter

之前,您的 printf 永远不会执行