可能是重复问题:
为什么在格式字符串中没有换行符时,printf调用后不会刷新?
当我运行类似于下面的代码时:
for (i = 1; i <= 10; i++) {
sleep(1);
printf(".");
}
那么我期望的是每秒钟一个点,总共十个点。但是我得到的是十秒后一次性出现十个点。为什么会这样,我该如何使程序每秒(或不同时间间隔)实际打印一个点(或其他内容)?
可能是重复问题:
为什么在格式字符串中没有换行符时,printf调用后不会刷新?
当我运行类似于下面的代码时:
for (i = 1; i <= 10; i++) {
sleep(1);
printf(".");
}
printf()
函数正在缓存数据,您可以使用fflush(stdout)
强制刷新数据:
for (i = 1; i<=10; i++)
{
sleep(1);
printf(".");
fflush(stdout);
}
for (int i = 0; i < big_number; i++) ;
并禁用优化。我这里有(不是我的)真正执行此操作的生产代码^_^ - Bitterblue