在C行中暂停打印在同一行中
|
我想让程序打印一些内容,然后等待几秒钟,然后在同一行中打印其他内容。我尝试将其编写为:
printf (\"bla bla bla\");
sleep (2);
printf (\"yada yada yada\\n\");
但是在输出中,我要等待2秒,然后将整行打印为一行。当我尝试将输出放在不同的行中时,它确实会暂停打印。
如何使其在同一行中暂停打印?
*在Linux上工作
没有找到相关结果
已邀请:
2 个回复
蹄渭信妥扳
fflush强制将stdout内部缓冲区刷新到屏幕。
青董据零
默认情况下是行缓冲流,这意味着您需要显式刷新它。它在换行符上隐式刷新。 C99标准强制要求这种行为。 这意味着在您的第一个“ 3”中,文本将添加到内部缓冲区中。这样做是为了提高效率,例如打印大量小文本碎片时。 您的第二个“ 3”包含换行符,这将导致流被刷新。如果需要,可以通过
显式刷新
。 作为替代方案,您也可以使用无缓冲stderr,如ѭ7中所示,但顾名思义,它用于错误和警告。 另请参见SO问题,除非在格式字符串中包含换行符,否则在调用后为什么printf不会刷新?