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值,就像这样
.有人可以解释这种行为吗?
printf不是等待它getchar.getchar在场景后面使用一个缓冲区.当该缓冲区为空时,getchar将从stdin读取1行,然后返回第一个字符.如果它不为空,它将立即从缓冲区返回下一个字符.
这意味着getchar将在您第一次调用它时等待.因此,在printf你按下之前你永远不会执行enter