setbuf何时有用(除了NULL值之外)
When is setbuf useful (besides the NULL value)?
setbuf
函数什么时候有用(NULL值除外)?
我试图发明这些例子,但我还是做不到
我理解setvbuf
是如何有用的,但我不理解setbuf
。
基本上,setvbuf
是一个与setbuf
相同逻辑的较新API。setbuf
的存在是为了与在setvbuf
存在之前编写的程序兼容。
换句话说,除非您正在处理已经使用setbuf
的代码,否则忽略它的存在。
参考:
功能:
void setbuf (FILE *stream, char *buf)
- 如果
buf
是空指针,则此函数的效果相当于用_IONBF
的模式参数调用setvbuf
。否则,它相当于用buf
调用setvbuf
,并且模式为_IOFBF
,大小参数为BUFSIZ
- 提供setbuf函数是为了与旧代码兼容;在所有新程序中使用setvbuf
三种可能的情况:
-
在(不太可能的)情况下,你想";优化";您的I/O缓冲区,您可以使用setvbuf。
-
您可能希望将缓冲区缓冲到您直接控制的内存中(setbuf或setvbuf)
和
- 您可能希望关闭缓冲(或将其重新打开:再次使用setbuf或setvbuf)
参考文献:
Beej的C指南,40.9 setbuf(),setvbuf()