fflush while while循环
问题描述:
我一直在尝试使用fflush来制作进度条。 为了测试fflush,我写了下面的小代码。fflush while while循环
它的工作原理是当我取消注释“sleep(1);” ,但如果 仍然被注释掉,它会以意想不到的方式工作。它打印第一个短划线,等待比打印所有剩余的 9并退出。
我不明白为什么它有所作为。
int main()
{
int f,j;
j =0;
for(f=0;f<10;f++)
{
printf("-");
fflush(stdout);
while(j++<1000000000);
//sleep(1);
}
}
答
更改您的for循环,像这样:
来自:
for(f=0;f<10;f++)
到:
for(f=0, j=0; f<10; f++, j=0)
答
您需要在while循环后将j
设置回0。下一次迭代它将跳过while循环。
答
这是因为在每次外循环迭代时都不会将内循环计数器j
重置为零,即仅在第一次执行时才会执行while()
。没什么所以用fflush()
:)
答
为先“为”迭代f=0
,将打印的第一个破折号,随后将运行j
高达1十亿,然后将打印剩余的九个破折号因为j大于10亿因此不再等待或延迟。如果sleep(1)
被注释掉,它应该如何运行。
您可能希望在while循环之后添加行j=0;
以将j重置为零。
当您取消注释sleep(1)
时,打印每个短划线后会出现一个几乎不明显的延迟(我猜测是1毫秒)。
谢谢你,这是一个愚蠢的错误:) – yam 2010-10-01 02:39:23
我希望你不是真正计划使用'while(j ++ jamesdlin 2010-10-01 03:29:35