跳转到内容

setvbuf :指定文件或流的缓冲

#include <stdio.h>
int setvbuf(FILE *fp, char *buf, int mode, size_t size);
```### 描述
使用 setvbuf 来指定您希望对 fp 所标识的文件或流采用哪种缓冲方式,方法是将以下值之一(来自 stdio.h)作为 mode 参数使用:
_IONBF 不使用缓冲区:将输出直接发送到主机系统,针对 fp 所标识的文件或流。
_IOFBF 使用完全输出缓冲:只有当缓冲区已满,或者有输入操作介入时,输出才会传递给主机系统。
_IOLBF 使用行缓冲:在每个换行符处,以及当缓冲区已满,或者有输入操作介入时,将输出传递给主机系统。
使用 size 参数来指定您希望的缓冲区大小。如果您愿意,可以通过将指向合适内存区域的指针作为 buf 传入,来自行提供缓冲区。否则,您可以将 NULL 作为 buf 参数传入,setvbuf 将会分配缓冲区。### 警告
您只能在执行除打开文件之外的任何文件操作之前使用 setvbuf。
如果您提供了一个非空的 buf,则必须确保相关的存储在您关闭 fp 所标识的流之前一直可用。### 返回值
结果为 0 表示成功,EOF 表示失败(无效的 mode 或 size 可能导致失败)。
---
**权威来源**: BUSMASTER DITA help source `setvbuf.dita`, compiled into `BUSMASTER.CHM` with the application.