setbuf()函数
setbuf()函数用于给输入流输出流设置缓冲区,函数的声明如下所示:
void setbuf(FILE *stream, char *buf);
上述函数声明中,参数stream表示一个文件指针,指向一个文件流。buf是用户分配的缓冲空间,长度至少是BUFSIZ,BUFSIZ是定义的宏,大小为512字节。
接下来通过一个具体案例来学习setbuf()函数的使用,如例1所示。
例1 setbufFile.c
1 #define _CRT_SECURE_NO_WARNINGS
2 #include <stdio.h>
3 int main()
4 {
5 char buf[BUFSIZ] = {0};
6 setbuf(stdout, buf);
7 puts("Itcast");
8 fflush(stdout);
9 return(0);
10 }
例1运行结果如图1所示。
图1 例1运行结果
在例1中,第5行代码定义了一个字符数组buf;第6行代码调用setbuf()函数将标准输出流stdout与buf关联起来,这样当向stdout输出数据时,数据会先暂存于buf数组中;第7行代码调用puts()函数向stdout输出数据“Itcast”;第8行代码调用fflush()函数将缓冲区buf中的数据刷新到标准输出。由图1可知,程序成功输出了“Itcast”。
如果注释掉第8行代码,则数据存储一直存储在buf缓冲中,并没有传输给标准输出,则程序运行结束后,屏幕上不会输出Itcast。