setbuf
来自 cppreference.com
定义在头文件 <stdio.h> 中 |
||
void setbuf( FILE *stream, char *buffer ); |
(until C99) | |
void setbuf( FILE *restrict stream, char *restrict buffer ); |
(since C99) | |
#define BUFSIZ /*未指定*/ |
||
设置用于流操作的内部缓冲区。它至少应为 BUFSIZ
个字符长。
如果 buffer
不为 null,则等效于 setvbuf(stream, buffer, _IOFBF, BUFSIZ).
如果 buffer
为 null,则等效于 setvbuf(stream, NULL, _IONBF, 0),这将关闭缓冲。
内容 |
[编辑] 参数
stream | - | 要设置缓冲区的文件流 |
buffer | - | 指向流要使用的缓冲区的指针。如果提供 null 指针,则缓冲将关闭 |
[编辑] 返回值
无。
[编辑] 说明
如果 BUFSIZ 不是合适的缓冲区大小,则可以使用 setvbuf 来更改它。
setvbuf 也应该用于检测错误,因为 setbuf
不会指示成功或失败。
此函数只能在 stream
与打开的文件关联后使用,但在执行任何其他操作(除了对 setbuf/setvbuf
的失败调用)之前使用。
一个常见错误是将 stdin 或 stdout 的缓冲区设置为一个数组,该数组的生命周期在程序终止之前结束
[编辑] 示例
setbuf
可用于禁用需要立即输出的流的缓冲。
运行此代码
输出
ab
[编辑] 参考
- C17 标准 (ISO/IEC 9899:2018)
- 7.21.5.5 setbuf 函数 (p: 225)
- C11 标准 (ISO/IEC 9899:2011)
- 7.21.5.5 setbuf 函数 (p: 307-308)
- C99 标准 (ISO/IEC 9899:1999)
- 7.19.5.5 setbuf 函数 (p: 273)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 4.9.5.5 setbuf 函数
[编辑] 另请参阅
设置文件流的缓冲区及其大小 (function) | |
C++ 文档 for setbuf
|