当我打开setbuf()
流来调整缓冲时,是否需要调用setvbuf()
和FILE
等函数?
是不是自动处理了I / O缓冲?
答案 0 :(得分:2)
不,缓冲是自动处理的,但可能不是您想要或需要的方式。
您可能希望在每次写入时刷新,仅在换行时,仅在完整缓冲区上,并且默认情况下您的情况是错误的。
或者您可能需要更大的缓冲效率。
在所有这些情况下,请调整默认值 虽然,一般来说,默认是明智的,可以单独使用。
这里是自动嗅探器严重失败的情况:
printf statement is not executing before scanf statement in netbean
答案 1 :(得分:2)
不,没有必要或强制要求。
如果该流的默认缓冲不是您想要的,则只能调用setbuf
或setvbuf
。例如,标准输出通常是行缓冲,因此输出不会被刷新,直到缓冲区已满或发送换行符。如果您希望标准输出无缓冲(所有输出立即显示),然后您需要使用setbuf
或setvbuf
。