setbuf函数何时有用(NULL值除外)?我试着编造例子,但我还是做不到。我理解setvbuf的用处,但我不理解setbuf。
setbuf
setvbuf
bzzcjhmw1#
基本上,setvbuf是与setbuf具有相同逻辑的较新API。setbuf的存在是为了与setvbuf存在之前编写的程序兼容。换句话说,除非您处理的代码已经使用了setbuf,否则就忽略它的存在。Reference:
void setbuf (FILE *stream, char *buf)
buf
_IONBF
_IOFBF
BUFSIZ
pod7payv2#
三种可能的情况:1.在您希望"优化" I/O缓冲区的情况下(不太可能),可以使用setvbuf。1.您可能希望缓冲到您直接控制的内存中(setbuf或setvbuf)还有...1.您可能希望关闭缓冲(或重新打开缓冲:同样是setbuf或setvbuf)。参考:Beej's Guide to C,40.9设置缓冲区(),设置虚拟缓冲区()
2条答案
按热度按时间bzzcjhmw1#
基本上,
setvbuf
是与setbuf
具有相同逻辑的较新API。setbuf
的存在是为了与setvbuf
存在之前编写的程序兼容。换句话说,除非您处理的代码已经使用了
setbuf
,否则就忽略它的存在。Reference:
void setbuf (FILE *stream, char *buf)
buf
为空指针,则此函数的效果等效于使用模式参数_IONBF
调用setvbuf
。否则,等效于使用buf
、模式参数_IOFBF
和大小参数BUFSIZ
调用setvbuf
。pod7payv2#
三种可能的情况:
1.在您希望"优化" I/O缓冲区的情况下(不太可能),可以使用setvbuf。
1.您可能希望缓冲到您直接控制的内存中(setbuf或setvbuf)
还有...
1.您可能希望关闭缓冲(或重新打开缓冲:同样是setbuf或setvbuf)。
参考:
Beej's Guide to C,40.9设置缓冲区(),设置虚拟缓冲区()