#C 语言标准库函数 setbuf
/*********************************************
* @brief 设置缓冲区
* @param fp 文件流
* @param buffer 缓冲区
********************************************/
void setbuf(FILE* restrict fp, char* restrict buffer);
说明
设置缓冲区。
如果参数 buffer
为 NULL
,则关闭缓冲。
参数
fp
- 要操作的文件流buffer
- 缓冲区,不可少于 100 个字节
返回值
无
#示例
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
setbuf(stdout, NULL); // 关闭 stdout 的缓冲
printf("Hello World"); // 输出
quick_exit(0); // quick_exit 不会自动冲洗 IO 流
return 0;
}
运行结果:
Hello World
说明:
示例中通过调用 quick_exit 函数快速退出,此时不会自动冲洗文件流。
由于手动调用 setbuf
关闭了 stdout
的缓冲,因此运行此示例时可以看见打印。
如果 stdout
使用缓冲,将看不见任何打印。
#推荐阅读
#参考标准
- C17 standard (ISO/IEC 9899:2018):
- 7.21.5.5 The setbuf function (p: 225)
- C11 standard (ISO/IEC 9899:2011):
- 7.21.5.5 The setbuf function (p: 307-308)
- C99 standard (ISO/IEC 9899:1999):
- 7.19.5.5 The setbuf function (p: 273)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.9.5.5 The setbuf function