把缓冲区与流相关

    技术2022-05-20  38

    功 能: 把缓冲区与流相关 用 法: int setvbuf(FILE *stream, char *buf, int type, unsigned size); 程序例: #include int main( void) {    FILE *input, *output;    char bufr[512];    input = fopen(" file.in", " r+b");    output = fopen(" file.out", " w");    /* set up input stream for minimal disk access,       using our own character buffer */    if (setvbuf(input, bufr, _IOFBF, 512) != 0)       printf(" failed to set up buffer for input file/n");    else       printf(" buffer set up for input file/n");    /* set up output stream for line buffering using space that       will be obtained through an indirect call to malloc */    if (setvbuf(output, NULL, _IOLBF, 132) != 0)       printf(" failed to set up buffer for output file/n");    else       printf(" buffer set up for output file/n");    /* perform file I/O here */    /* close files */    fclose(input);    fclose(output);    return 0; }

    设置文件缓冲区函数       void setbuf(FILE *stream,char *buf);       void setvbuf(FILE *stream,char *buf,int type,unsigned size);       这两个函数将使得打开文件后,用户可建立自己的文件缓冲区,而不使用fopen()函数打开文件设定的默认缓冲区。         对于setbuf()函数,buf指出的缓冲区长度由头文件stdio.h中定义的宏BUFSIZE的值决定,缺省值为512字节。当选定buf为空时,setbuf函数将使的文件I/O不带缓冲。而对setvbuf函数,则由malloc函数来分配缓冲区。参数size指明了缓冲区的长度(必须大于0),而参数type则表示了缓冲的类型,其值可以取如下值: type 值 含义       _IOFBF 文件全部缓冲,即缓冲区装满后,才能对文件读写       _IOLBF 文件行缓冲,即缓冲区接收到一个换行符时,才能对文件读写       _IONBF 文件不缓冲,此时忽略buf,size的值,直接读写文件,不再经过文件缓冲区缓冲


    最新回复(0)