Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一行中用C暂停打印_C_Linux_Printf_Sleep - Fatal编程技术网

在同一行中用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
可能只是问题的开始。请参阅自移至超级用户后的一个问题,了解一个中等完整的工作示例。