我一直在尝试使用fflush来制作进度条。为了测试fflush,我编写了下面的小代码。
当我取消对“sleep(1)”的注释时,它可以正常工作,但是如果它仍然被注释掉,它会以一种意想不到的方式工作。它打印第一个破折号,等待然后打印所有剩余的9个破折号,然后退出。
我不明白这有什么不同。
int main()
{
int f,j;
j =0;
for(f=0;f<10;f++)
{
printf("-");
fflush(stdout);
while(j++<1000000000);
//sleep(1);
}
}发布于 2010-10-01 11:40:11
如下所示更改for循环:
发自:
for(f=0;f<10;f++)至:
for(f=0, j=0; f<10; f++, j=0)发布于 2010-10-01 10:26:50
在while循环之后,您需要将j设置回零。在下一次迭代中,它将跳过while循环。
发布于 2010-10-01 10:26:52
这是因为您不会在每次外部循环迭代时将内循环计数器j重置为零,即只在第一次循环时执行while()。与fflush()无关:)
https://stackoverflow.com/questions/3836102
复制相似问题