在同一行中用C暂停打印
我想让我的程序打印一些东西,然后等待几秒钟,然后在同一行中打印其他东西。我试着把它写成:在同一行中用C暂停打印,c,linux,printf,sleep,C,Linux,Printf,Sleep,我想让我的程序打印一些东西,然后等待几秒钟,然后在同一行中打印其他东西。我试着把它写成: printf ("bla bla bla"); sleep (2); printf ("yada yada yada\n"); 但在输出中,我需要等待2秒钟,然后将整行打印为一行。当我尝试将输出放在不同的行中时,它会暂停打印 如何在同一行中暂停打印 *在Linux上工作 printf ("bla bla bla"); fflush(stdout); sleep (2); printf ("yada yad
printf ("bla bla bla");
sleep (2);
printf ("yada yada yada\n");
但在输出中,我需要等待2秒钟,然后将整行打印为一行。当我尝试将输出放在不同的行中时,它会暂停打印
如何在同一行中暂停打印
*在Linux上工作
printf ("bla bla bla");
fflush(stdout);
sleep (2);
printf ("yada yada yada\n");
fflush强制将标准输出内部缓冲区刷新到屏幕上 默认情况下,
stdout
是一个行缓冲流,这意味着您需要显式地刷新它。它在换行符上隐式刷新。C99标准强制执行此行为
这意味着在第一个printf
中,文本被添加到内部缓冲区。这样做是为了提高效率,例如在打印大量小文本片段时
第二个printf
包含一个换行符,这会导致流被刷新。您可以通过fflush(stdout)显式刷新stdout
代码>如果你想的话
作为替代,您也可以使用无缓冲的stderr,如fprintf(stderr,“bla-bla-bla”)代码>,但顾名思义,它用于错误和警告
另请参见SO问题。根据您的需要,fflush
可能只是问题的开始。请参阅自移至超级用户后的一个问题,了解一个中等完整的工作示例。