相关疑难解决方法(0)

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

我只是好奇应该满足哪些条件自动刷新stdout缓冲区.

首先,我很困惑这个伪代码不会在每次迭代时打印输出:

while (1) {
    printf("Any text");
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

但如果我添加换行符,它会.

经过几次实验,我发现在我的机器上stdout缓冲区被刷新:

  1. 当我输入1025个字符或更多字符时;
  2. 当我读到标准时;
  3. 当我将换行符添加到stdout时;

第一个条件是完全清楚的 - 当缓冲区已满时,应该刷新它.第二个也是合理的.但为什么换行符导致潮红?其他隐含的条件是什么?

c buffer stdio

8
推荐指数
3
解决办法
1887
查看次数

没有fflush输出不打印(stdout)

我不明白为什么有时候我需要使用fflush(),有时候不需要.

我的程序目前是segfaulting,我正在用print语句调试它.程序段错误时,不会stdout自动刷新缓冲区?

c io stdout fflush

5
推荐指数
1
解决办法
4360
查看次数

标签 统计

c ×2

buffer ×1

fflush ×1

io ×1

stdio ×1

stdout ×1