缓冲区类型

版权声明:交个朋友呗,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);
}

猜你喜欢

转载自blog.csdn.net/guozhikai2019/article/details/88915021