【问题标题】:how to sleep in c [duplicate]如何在c中睡觉[重复]
【发布时间】:2012-11-03 08:44:03
【问题描述】:

可能重复:
Why does printf not flush after the call unless a newline is in the format string?

当我运行类似

的东西时
for (i = 1; i <= 10; i++) {
    sleep(1);
    printf(".");
}

那么我期望的是每秒一个点十次。我得到的是十秒后的十个点。为什么会这样,我如何让程序每秒(或不同的时间间隔)实际打印一个点(或做其他事情)?

【问题讨论】:

  • 如何在 c 中睡觉?尝试for (int i = 0; i &lt; big_number; i++) ; 并禁用优化。我这里有生产代码(不是我的),实际上是这样做的^_^

标签: c sleep


【解决方案1】:

printf() 正在缓冲数据,您可以使用fflush(stdout) 强制它刷新该数据:

for (i = 1; i<=10; i++) 
{  
    sleep(1); 
    printf("."); 
    fflush(stdout);
}

【讨论】:

  • 这就是我的想法...只是不知道 fflush() 谢谢 :)
猜你喜欢
  • 2011-09-22
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多