我想在每次循环运行以打印文本时打印,但我的程序仅在循环最后一次运行时打印它。我的代码:
while (shots>i){
printf ("%s", message);
i++;
sleep(1);
}
最后我只是在某一时刻得到所有的输出。
添加fflush(stdout);
afterprintf
将输出从缓冲区刷新到stdout
.
在缓冲区已满或像 '\n' 这样的特殊字符出现之前,输出不会stdout
出现,您需要手动执行(通过调用fflush
)。
尝试使用fflush。这将在 sleep 执行之前清除 stdout 缓冲区。因此,您的新代码块将如下所示:
while (shots>i){
printf ("%s", message);
fflush(stdout);
i++;
sleep(1);
}
printf
使用缓冲区。因此,只有在缓冲区已满或缓冲区已刷新时才会打印。