版权声明:交个朋友呗,QQ1085081059 https://blog.csdn.net/guozhikai2019/article/details/88915021
分类
全缓冲区
缓冲区满,调用fflush()刷新,关闭文件
行缓冲区
缓冲区满,遇到换行符刷新,关闭文件
无缓冲区
相当于调用系统调用,不缓冲
标准输入/输出为行缓冲,标准出错为无缓冲,普通文件为全缓冲。
#include <stdio.h>
#define FILE_PATH "/home/rd/LinuxC_Study/01-IO/buff_type_test/main.c"
void pr_stdio(const char *, FILE *);
int main(void)
{
FILE *fp;
fputs("enter any character\n", stdout);
if(getchar()==EOF)
printf("getchar error");
fputs("one line to standard error\n", stderr);
pr_stdio("stdin", stdin);
pr_stdio("stdout", stdout);
pr_stdio("stderr", stderr);
if ( (fp = fopen(FILE_PATH, "r")) == NULL)
perror("fopen error");
if (fgetc(fp) == EOF)
perror("getc error");
pr_stdio(FILE_PATH, fp);
return(0);
}
void pr_stdio(const char *name, FILE *fp)
{
printf("stream = %s, ", name);
if (fp->_flags & _IO_UNBUFFERED)
printf("无缓冲区\n");
else if (fp->_flags & _IO_LINE_BUF)
printf("行缓冲区\n");
else
printf("全缓冲区\n");
printf(", buffer size = %d\n", fp->_IO_buf_end-fp->_IO_buf_base);
}