【问题标题】:Printf waiting for enterprintf 等待输入
【发布时间】:2016-04-27 19:47:57
【问题描述】:
int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
      if(kr != '\n')
      {
        ss++;
      }

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

使用此代码,printf 一直在等待,直到我按下回车键,然后像这样同时打印所有连续的 ss 值

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

【问题讨论】:

  • printf 与等待行为无关……它是 getchar()。但首先尝试清理您的项目并重建它......然后再试一次。
  • 有没有办法禁用 getchar() 的输入缓冲流?

标签: c printf getchar


【解决方案1】:

printf 不是在等待,而是getchargetchar 在后台使用缓冲区。当该缓冲区为空时,getchar 将从标准输入读取 1 行并然后返回第一个字符。如果不为空,则立即从缓冲区返回下一个字符。

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

【讨论】:

  • 这与我每次想要打印某些东西时都必须按 Enter 有什么关系。我不明白你的解释
  • @DogusUral 这意味着你的循环条件中的getchar 在你按下回车之前是阻塞的,printf 在你按下回车之前永远不会执行。
猜你喜欢
  • 2014-04-07
  • 2016-06-26
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多