fflush的使用

只有缓冲区满了或者遇到“\n”才会打印到屏幕;

这样的c程序想必大家都不陌生,fflush()这个函数有清除输入输出缓存的功能,那很多人就会问了,什么是清除输入输出缓存呢?

其实就是我们在printf输出的时候,是先输出到一个叫缓存的地方去的,输出到那里后,然后才输出到屏幕上面去,但是因为for循环里只有一个printf语句,执行这一条语句的速度很快,因此如果不加fflush的话,你会发现是直接一次性打印到屏幕上的,其实是有经过一个缓存的过程,

但是如果加上fflush的话,那么就清除了缓存,也就是说每次 打印都会立刻输出到屏幕上去,stdout就是一个指针,指向屏幕的指针,准确地说是指向打印的窗口的指针。

#include<stdio.h>
#include<unistd.h>
int main()
{
        for(int i=0;i<10;i++)
        {
                printf("%d",i);
                sleep(1);
        }

        return 0;
}

上面代码打印很慢,要等0123456789一起输出;

加入fflush后:

#include<stdio.h>
#include<unistd.h>
int main()
{
        for(int i=0;i<10;i++)
        {
                printf("%d",i);
                fflush(stdout);//fflush(NULL);
                sleep(1);
        }

        return 0;
}

打印很快,0123456789逐个直接输出;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值