C语言 setbuf什么时候有用(除了NULL值)?

hmmo2u0o  于 2023-01-16  发布在  其他
关注(0)|答案(2)|浏览(134)

setbuf函数何时有用(NULL值除外)?
我试着编造例子,但我还是做不到。
我理解setvbuf的用处,但我不理解setbuf

bzzcjhmw

bzzcjhmw1#

基本上,setvbuf是与setbuf具有相同逻辑的较新API。setbuf的存在是为了与setvbuf存在之前编写的程序兼容。
换句话说,除非您处理的代码已经使用了setbuf,否则就忽略它的存在。
Reference

    • 功能:**void setbuf (FILE *stream, char *buf)
  • 如果buf为空指针,则此函数的效果等效于使用模式参数_IONBF调用setvbuf。否则,等效于使用buf、模式参数_IOFBF和大小参数BUFSIZ调用setvbuf
  • 提供setbuf函数是为了与旧代码兼容;在所有新程序中使用setvbuf。
pod7payv

pod7payv2#

三种可能的情况:
1.在您希望"优化" I/O缓冲区的情况下(不太可能),可以使用setvbuf
1.您可能希望缓冲到您直接控制的内存中(setbuf或setvbuf)
还有...
1.您可能希望关闭缓冲(或重新打开缓冲:同样是setbuf或setvbuf)。
参考:
Beej's Guide to C,40.9设置缓冲区(),设置虚拟缓冲区()

相关问题