是否需要手动请求缓冲?

时间:2014-09-19 20:42:38

标签: c

当我打开setbuf()流来调整缓冲时,是否需要调用setvbuf()FILE等函数?
是不是自动处理了I / O缓冲?

2 个答案:

答案 0 :(得分:2)

不,缓冲是自动处理的,但可能不是您想要或需要的方式

您可能希望在每次写入时刷新,仅在换行时,仅在完整缓冲区上,并且默认情况下您的情况是错误的。

或者您可能需要更大的缓冲效率。

在所有这些情况下,请调整默认值 虽然,一般来说,默认是明智的,可以单独使用。

这里是自动嗅探器严重失败的情况:
printf statement is not executing before scanf statement in netbean

答案 1 :(得分:2)

不,没有必要或强制要求。

如果该流的默认缓冲不是您想要的,则只能调用setbufsetvbuf。例如,标准输出通常是行缓冲,因此输出不会被刷新,直到缓冲区已满或发送换行符。如果您希望标准输出无缓冲(所有输出立即显示),然后您需要使用setbufsetvbuf