setvbuf 和setbuf 原型:
#include <stdio.h>
void setbuf (FILE *restrict fp, char *restrict buf)
void setvbuf (FILE *restrict fp, char *restrict buf, int mode, size_t size)
函数 mode buf 缓冲区及长度 缓冲类型
setbuf 非空 长度为BUFSIZE的用户buf 全缓冲或行缓冲
NULL 无缓冲区 不带缓冲
_IOFBF 非空 长度为size的用户buf 全缓冲
setvbuf NULL 合适长度的系统缓冲区
_IOLBF 非空 长度为size的用户buf 行缓冲
NULL 合适长度的系统缓冲区
_IONBF NULL 合适长度的系统缓冲区 不带缓冲
无 无缓冲区
void setbuf_u(FILE *fp, char *buf)
{
if ( buf == NULL){
if(setvbuf(fp,buf,_IONBF,BUFSIZ) != 0){
err_sys("setvbuf error");
}
}
else{
if(setvbuf(fp,buf,_IOFBF,BUFSIZ) != 0){
err_sys("setvbuf error1");
}
}
}