setbuf何时有用(除了NULL值之外)

When is setbuf useful (besides the NULL value)?

本文关键字:NULL 除了 何时 有用 setbuf      更新时间:2023-10-16

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

三种可能的情况:

  1. 在(不太可能的)情况下,你想";优化";您的I/O缓冲区,您可以使用setvbuf。

  2. 您可能希望将缓冲区缓冲到您直接控制的内存中(setbuf或setvbuf)

  1. 您可能希望关闭缓冲(或将其重新打开:再次使用setbuf或setvbuf)

参考文献:

Beej的C指南,40.9 setbuf(),setvbuf()