gpt4 book ai didi

c - 由于 sleep() 导致的奇怪行为

转载 作者:太空狗 更新时间:2023-10-29 15:51:17 26 4
gpt4 key购买 nike

我刚刚开始熟悉 sleep(),我发现

#include<stdio.h>
int main()
{
int i=0;
printf("*********Testing Sleep***********\n");
for(i=0;i<10;i++)
{
printf("%d",i);
sleep(1);
}
return 0;

这不会在每次迭代时打印数字,而是在退出循环时转储所有数字....但是当我修改 printf 时...

#include<stdio.h>
int main()
{
int i=0;
printf("*********Testing Sleep***********\n");
for(i=0;i<10;i++)
{
printf("%d\n",i);
sleep(1);
}
return 0;

现在我添加了 '\n' 新行,它按预期工作......为什么它在前一个中表现得很奇怪......

最佳答案

这是因为输出缓冲区没有被刷新(换句话说,实际上提交给终端)。当你写一个换行符时,输出缓冲区更有可能被刷新(但在某些情况下并不总是)。许多终端实现这样做是为了提高性能。要强制执行您想要的行为,您需要在每次 printf 调用后调用 fflush(stdout);,如下所示:

#include<stdio.h>
int main()
{
int i=0;
printf("*********Testing Sleep***********\n");
for(i=0;i<10;i++)
{
printf("%d",i);
fflush(stdout);
sleep(1);
}
return 0;
}

关于c - 由于 sleep() 导致的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870518/

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