我对C中的写入处理方式感到困惑,所以我有一个字符串,s,我想要写入输出。为此,我使用fput:
fputs(s, stdout);但是很明显,这并不是写到输出,而是仅仅收集数据进行写入吗?它到底是在哪里收集的?因此,我必须等到程序退出,或者直到调用fflush(),直到输出实际写入stdout?我说的对吗?
发布于 2014-02-27 21:38:01
C标准IO流以三种模式之一运行:
您可以使用setvbuf()函数设置模式。这一切都发生在标准IO实现的核心部分。如果希望立即显示数据,请使用非缓冲模式。
引用C99 7.19.3#3的话:
当流未缓冲时,字符将尽快从源或目的地出现。否则,字符可以作为块累积和传输到或从主机环境中传输。当流被完全缓冲时,当缓冲区被填充时,字符将作为块传送到或从主机环境中传输。当流被缓冲时,当遇到新行字符时,字符将作为块传送到或从主机环境中传输。此外,当缓冲区被填充时,当输入被请求到非缓冲流时,或者在需要从主机环境传输字符的行缓冲流上请求输入时,字符打算作为块传输到主机环境。对这些特性的支持是实现定义的,并且可能通过
setbuf和setvbuf函数受到影响。
https://stackoverflow.com/questions/22076566
复制相似问题