Printf等待进入

时间:2016-04-27 19:47:58

标签: c printf getchar

int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
      if(kr != '\n')
      {
        ss++;
      }

      printf("%d\n",ss);
}

使用此代码,printf正在等待,直到我按下enter然后同时打印所有顺序ss值,如此

enter image description here

。有人可以解释这种行为吗?

1 个答案:

答案 0 :(得分:5)

printf并未等待它getchargetchar使用场景后面的缓冲区。当该缓冲区为空时,getchar将从标准输入读取1行,然后返回第一个字符。如果它不为空,它将立即从缓冲区返回下一个字符。

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

之前,enter永远不会被执行