Printing 使用sleep()函数在循环中逐个打印秒数 (j=1;j
我希望这段代码会打印“1s 2s 3s…10s”,它们之间有1秒的间隔,但它会在10秒后打印所有数字。我该怎么修?Printing 使用sleep()函数在循环中逐个打印秒数 (j=1;j,printing,ubuntu,sleep,seconds,Printing,Ubuntu,Sleep,Seconds,我希望这段代码会打印“1s 2s 3s…10s”,它们之间有1秒的间隔,但它会在10秒后打印所有数字。我该怎么修? 我正在ubuntu上工作 在printf中添加\n以刷新 for(j = 1; j < 11; j++) { printf("%ds ",j); sleep(1); } (j=1;j
我正在ubuntu上工作 在printf中添加\n以刷新
for(j = 1; j < 11; j++)
{
printf("%ds ",j);
sleep(1);
}
(j=1;j<11;j++)的
{
printf(“%ds\n”,j);
睡眠(1);
}
有关更多信息,请参阅。标准输出流是缓冲的,因此如果您立即想要结果,则需要使用
fflush()
刷新该缓冲区:
(j=1;j<11;j++)的{
printf(“%ds”,j);
fflush(stdout);
睡眠(1);
}
不正确。换行符不需要刷新标准输出缓冲区,更重要的是,它将打破原始asker的格式;我发布了前面一个问题的链接,该问题讨论了fflush()和禁用缓冲区。让我们不要在这里重复,让他读原始问题。让我们不要在这里重复?你提出了一些完全无关的建议:换行。你的答案只有一部分是有用的,另一个问题。@nightcracker:我可能没有用最好的方式来表述它,但我想说的是,它直到最后才打印出来,因为缓冲区没有被刷新,当您将换行符放入打印字符串中时,printf会自动执行的操作。但仅当打印到终端时。
for(j = 1; j < 11; j++)
{
printf("%ds\n",j);
sleep(1);
}
for (j = 1; j < 11; j++) {
printf("%ds ", j);
fflush(stdout);
sleep(1);
}