仅在while循环结束时打印文本

时间:2013-09-08 13:42:57

标签: c printf

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

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

最后我只是得到了所有输出。

3 个答案:

答案 0 :(得分:6)

fflush(stdout);之后添加printf,将缓冲区的输出刷新为stdout

在缓冲区已满或“\ n”之类的特殊字符出现之前,输出不会转到stdout,您需要手动执行此操作(通过调用fflush)。

答案 1 :(得分:3)

尝试使用fflush。这将在睡眠执行之前清除stdout缓冲区。所以你的新代码块将如下所示:

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

答案 2 :(得分:2)

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

相关问题