setbuf
来自cppreference.com
在标头 <stdio.h> 定义
|
||
void setbuf( FILE *stream, char *buffer ); |
(C99 前) | |
void setbuf( FILE *restrict stream, char *restrict buffer ); |
(C99 起) | |
#define BUFSIZ /* 未指明 */ |
||
设置用于流操作的内部缓冲区。其长度至少应该为 BUFSIZ
个字符。
若 buffer
非空,则等价于 setvbuf(stream, buffer, _IOFBF, BUFSIZ) 。
若 buffer
为空,则等价于 setvbuf(stream, NULL, _IONBF, 0) ,这会关闭缓冲。
参数
stream | - | 要设置缓冲区的文件流 |
buffer | - | 指向文件流所用的缓冲区的指针。若提供空指针,则关闭缓冲。 |
返回值
无。
注解
若 BUFSIZ 不是适合的缓冲区大小,则能用 setvbuf 更改它。
setvbuf 亦应当用于检测错误,因为 setbuf
不指示成功或失败。
此函数仅可在已将 stream
关联到打开的文件后,但要在任何其他操作(除了对 setbuf/setvbuf
的失败调用)前使用。
一个常见错误是设置 stdin 或 stdout 的缓冲区为生存期在程序终止前结束的数组:
示例
setbuf
可用于禁用流上的缓冲,以要求其立即输出。
运行此代码
输出:
ab
引用
- C17 标准(ISO/IEC 9899:2018):
- 7.21.5.5 The setbuf function (第 225 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.21.5.5 The setbuf function (第 307-308 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.19.5.5 The setbuf function (第 273 页)
- C89/C90 标准(ISO/IEC 9899:1990):
- 4.9.5.5 The setbuf function
参阅
为文件流设置缓冲区和其大小 (函数) |