setbuf
来自 cppreference.cn
                    
                                        
                    
                    
                                                            
                    | 定义于头文件  <stdio.h> | ||
| void setbuf( FILE          *stream, char          *buffer ); | (直到 C99) | |
| void setbuf( FILE *restrict stream, char *restrict buffer ); | (C99 起) | |
| #define BUFSIZ     /*unspecified*/ | ||
设置用于流操作的内部缓冲区。它应该至少有 BUFSIZ 个字符长。
如果 buffer 不为 null,则等同于 setvbuf(stream, buffer, _IOFBF, BUFSIZ)。
如果 buffer 为 null,则等同于 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 (p: 225)
 
- C11 标准 (ISO/IEC 9899:2011)
- 7.21.5.5 The setbuf function (p: 307-308)
 
- C99 标准 (ISO/IEC 9899:1999)
- 7.19.5.5 The setbuf function (p: 273)
 
- C89/C90 标准 (ISO/IEC 9899:1990)
- 4.9.5.5 The setbuf function
 
[编辑] 另请参阅
| 为文件流设置缓冲区及其大小 (函数) | |
| C++ 文档 for setbuf | |


