我对 C 中的写入处理如何进行感到困惑。所以我有一个字符串 s,我想将其写入输出。为此,我使用 fputs:
fputs(s, stdout);
但显然这不会写入输出,而只是收集数据进行写入?具体是在哪里收集的?所以我必须等到程序退出或者直到我调用 fflush() 直到输出实际写入标准输出?我对吗?
C 标准 IO 流以三种模式之一运行:
- 全缓冲
- 行缓冲
- 无缓冲的
您可以使用以下命令设置模式功能。这一切都发生在标准 IO 实现的深处。如果您希望数据立即显示,请使用无缓冲模式。
引用自C99 7.19.3#3:
当一个流是无缓冲的,字符旨在出现在
尽快从源头或目的地到达。否则字符可能是
作为一个块累积并传输到主机环境或从主机环境传输。当一个
流是全缓冲,字符旨在传输至或来自
当缓冲区被填充时,主机环境作为一个块。当一个流是线
缓冲的,字符旨在传输到主机或从主机传输
当遇到换行符时,环境作为一个块。此外,
字符旨在作为块传输到主机环境
当缓冲区已满时,当在无缓冲的流上请求输入时,或者
当在需要传输的行缓冲流上请求输入时
来自宿主环境的字符。对这些特征的支持是
实现定义的,并且可能会受到影响setbuf
andsetvbuf
功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)