【发布时间】:2014-02-27 17:58:06
【问题描述】:
我对 C 语言中的写入处理方式感到困惑。所以我有一个字符串 s,我想将其写入输出。为此,我使用 fputs:
fputs(s, stdout);
但显然这并没有写入输出,而只是收集数据进行写入?它究竟是在哪里收集的?所以我必须等到程序退出或者直到我调用 fflush() 直到输出实际写入标准输出?我说的对吗?
【问题讨论】:
-
有时输出不会刷新,直到写入行尾
\n。 -
@PauloBu 对于 printf 来说是这样,对于 fputs 则不然。
-
@Zaffy 点了,我认为它可能是相似的。
-
@zaffy 不,缓冲模式是流的属性,而不是写入流的函数。
-
数据是通过标准输出“收集”的,如果是 FILE 类型,它封装了许多内部簿记内容。使用调试器单步执行
fputs,您将看到它是如何工作的。不过,这可能非常艰难。