APUE---chap5标准I/O---5.4缓冲(fflush/setvbuf)

本文介绍了标准I/O库中缓冲的作用,包括全缓冲、无缓冲和行缓冲三种类型,并通过示例解释了fflush函数如何影响缓冲区的内容输出。同时,讨论了setvbuf函数用于修改缓冲模式的功能,但指出该函数在实际应用中并不常用。
摘要由CSDN通过智能技术生成
  • 缓冲意义及类型

标准I/O库提供缓冲存在的目的是为了减少使用read和write的调用次数。

缓冲有以下三种类型:

(1)全缓冲:流满了再刷新,是强制的。

(2)无缓冲:比如stderr,流被填充了内容立刻输出

(3)行缓冲:这个流收到了换行符就会输出并刷新流,比如printf(输出到stdout)

  • fflush函数

注释了下面的fflush函数,那么程序将不会打印任何内容,因为printf指向的流是行缓冲,没收到换行符,时不可以输出的

​
int main(int argc, char **argv) {
    printf("Before while(1)");
    // fflush(stdout);  // 刷新stdout流
    while (1)
        ;
    printf("after while()");
    // fflush(NULL);
    exit(0);
}

​

如果把printf("Before while(1)");改为printf("Before while(1)\n"); // 加入换行符,即可看到打印内容

也可以不变,加入上面注释的fflush(stdout); 也可看到打印。

  • setvbuf()函数

setvbuf就是用来修改缓冲模式的函数(最开始讲的三种)一般不怎么用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值