2

我想在每次循环运行以打印文本时打印,但我的程序仅在循环最后一次运行时打印它。我的代码:

while (shots>i){
  printf ("%s", message);
  i++;
  sleep(1);
}

最后我只是在某一时刻得到所有的输出。

4

3 回答 3

6

添加fflush(stdout);afterprintf将输出从缓冲区刷新到stdout.

在缓冲区已满或像 '\n' 这样的特殊字符出现之前,输出不会stdout出现,您需要手动执行(通过调用fflush)。

于 2013-09-08T13:45:21.173 回答
3

尝试使用fflush。这将在 sleep 执行之前清除 stdout 缓冲区。因此,您的新代码块将如下所示:

while (shots>i){
  printf ("%s", message);
  fflush(stdout);
  i++;
  sleep(1);
}
于 2013-09-08T13:46:15.993 回答
2

printf使用缓冲区。因此,只有在缓冲区已满或缓冲区已刷新时才会打印。

于 2013-09-08T13:45:59.207 回答