Printf等待进入

Dog*_*ral 0 c printf getchar

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

      printf("%d\n",ss);
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

lit*_*ite 5

printf不是等待它getchar.getchar在场景后面使用一个缓冲区.当该缓冲区为空时,getchar将从stdin读取1行,然后返回第一个字符.如果它不为空,它将立即从缓冲区返回下一个字符.

这意味着getchar将在您第一次调用它时等待.因此,在printf你按下之前你永远不会执行enter