打开FILE
流以调整缓冲时,是否需要调用setbuf()
和setvbuf()
等函数
I/O缓冲不是自动处理的吗?
否,缓冲是自动处理的,但可能不是您想要或需要的方式。
您可能希望在每次写入时刷新,只在换行时刷新,也只在满缓冲区时刷新,而默认值对于您的情况是错误的。
或者你可能想要一个更大的缓冲区来提高效率。
在所有这些情况下,请调整默认值
不过,总的来说,违约是合理的,可以不受影响。
这里有一个自动嗅探器严重失败的案例:
printf语句在netbean 中的scanf语句之前未执行
否,它不是必需的或强制性的。
如果该流的默认缓冲不是您想要的,那么您只需要调用setbuf
或setvbuf
。例如,标准输出通常是行缓冲,因此在缓冲区满或发送换行符之前,不会刷新输出。如果希望标准输出不缓冲(所有输出立即显示),则需要使用setbuf
或setvbuf
。