Tag: buffer

在C中自动刷新stdout缓冲区的规则是什么?

我只是好奇应该满足哪些条件来自动刷新stdout缓冲区。 首先,我很困惑这个伪代码不会在每次迭代时打印输出: while (1) { printf(“Any text”); sleep(1); } 但如果我添加换行符,它会。 经过几次实验,我发现在我的机器上stdout缓冲区被刷新: 当我输入1025个或更多字符时; 当我读到标准时; 当我把换行符添加到stdout时; 第一个条件是完全清楚的 – 当缓冲区已满时,应该刷新它。 第二个也是合理的。 但为什么换行符导致潮红? 其他隐含条件是什么?