我想在for
循环的控制下,在同一行上一次打印单独的点(点,“。”):
for (i=0; i<100; i++)
{
printf(".");
sleep(1);
}
printf("\n");
但是输出仅在最后一个“ \ n”之后才显示在屏幕上,我希望每个人在打印后立即显示它们,以便用作进度指示器。我希望fflush()
在每次循环迭代中使用标准输出都会产生该结果,但这不起作用(结果仅在执行for循环后显示在屏幕上):
for (i=0; i<100; i++)
{
printf(".");
sleep(1);
fflush(stdout);
}
printf("\n");
我进一步测试了所有这些方法,无论是循环内还是循环外,都没有成功:
fflush(stdout);
fflush(NULL);
setbuf(stdout,NULL);
这是怎么回事,我该如何解决?
其他数据:
答案 0 :(得分:0)
嗯...一个愚蠢的问题,但我想还是应该把它写下来,因为有人也可以把它写下来:
问题是:在命令行测试中,我追加了一些| more
以停止屏幕转储。因此stdout
缓冲区已通过管道|
命令进行了更改。
说我的程序二进制文件名为dotting
。我通过键入以下内容来调用它:
dotting | more
我希望这个荒谬的案例将来能对任何人有所帮助。