gpt4 book ai didi

c++ - usleep() 函数不允许循环继续

转载 作者:太空狗 更新时间:2023-10-29 23:23:04 32 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
int i=0;
while(i<10)
{
printf("%d", i);
usleep(10000); // or sleep(1)
i++;
}
return 0;
}

我希望程序持续 10 秒,即打印 1 - 等待 1 秒 - 打印 2 - 等待 1 秒等等直到结束。但它并没有这样做——它只是一直等待(10 秒),然后将整个数字数组打印在一起,它们之间没有任何时间延迟,它只是一次打印 0123456789。编辑:我尝试使用 sleep() 而不是 usleep 但它是一样的如何解决?为什么会这样?

最佳答案

您的输出缓冲区未被刷新。默认情况下,当流中出现新行时写入输出。将您的 printf 更改为:

printf("%d\n", i);

或者试试这个:

printf("%d", i);
fflush(stdout);

另外,如果你想移除行缓冲行为,你可以使用 setvbuf()_IONBUF 模式。

关于c++ - usleep() 函数不允许循环继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259321/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com