4

在 C 中,有时我的输出在打印换行符之前不会打印到终端\n。例如:

int main()
{
   printf("Hello, World");
   printf("\n");
   return 0;
}

Hello World 直到下一次才会打印printf (我通过在 gdb 中设置断点知道这一点)。有人可以解释为什么会发生这种情况以及如何解决它吗?

谢谢!

4

2 回答 2

8

这样做是出于性能原因:将数据传递到控制台太昂贵(就执行速度而言),无法逐个字符地进行。这就是为什么在打印换行符之前输出被缓冲的原因:字符被收集在一个数组中,直到打印的时候,整个字符串被传递到控制台。您还可以显式强制输出,如下所示:

fflush(stdout);
于 2013-03-30T01:44:25.660 回答
4

此外,您还可以使用setvbuf(3)fflush()设置缓冲选项。

于 2013-03-30T01:46:43.573 回答