如何在C语言中实现睡眠功能

7

可能是重复问题:
为什么在格式字符串中没有换行符时,printf调用后不会刷新?

当我运行类似于下面的代码时:

for (i = 1; i <= 10; i++) {
    sleep(1);
    printf(".");
}

那么我期望的是每秒钟一个点,总共十个点。但是我得到的是十秒后一次性出现十个点。为什么会这样,我该如何使程序每秒(或不同时间间隔)实际打印一个点(或其他内容)?

1
如何在C语言中休眠?尝试使用for (int i = 0; i < big_number; i++) ;并禁用优化。我这里有(不是我的)真正执行此操作的生产代码^_^ - Bitterblue
1个回答

11

printf()函数正在缓存数据,您可以使用fflush(stdout)强制刷新数据:

for (i = 1; i<=10; i++) 
{  
    sleep(1); 
    printf("."); 
    fflush(stdout);
}

这正是我想的...只是不知道fflush(),谢谢 :) - foaly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接