我想在每次循环运行时打印以打印文本,但我的程序只在最后一次循环运行时打印它。 我的代码:
while (shots>i){
printf ("%s", message);
i++;
sleep(1);
}
最后我只是得到了所有输出。
答案 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
使用缓冲区。因此,只有在缓冲区已满或刷新缓冲区时才会打印。