学科分类
目录
C语言

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。

点击此处
隐藏目录