标准IO中fflush函数的使用和文件缓冲区的概念

一、IO概述

 

标准IO:通过文件指针访问文件(stdin stdout stderr)-------》带缓存

文件IO:通过文件描述符访问文件(0, 1, 2)---------》支持对各种文件进行读写操作

在linux下对于管道、套接字等设备进行读写操作时候,就必须使用文件IO进行操作了,对于标准IO,它为系统的库函数,在各种平台上的使用基本上相同,便于移植。

 

文件指针: FILE *

文件描述符:int

 

二、三种缓存区

 

1、行缓存区:对于终端操作采用的缓冲区

 

缓存区大小: 1024字节(1K)

刷新缓存条件:程序正常结束、缓存区满、 ’\n’ 、使用fflush函数

 

2、全缓存区:对于文件操作采用的缓冲区

 

缓存区大小:4096字节(4K)

刷新缓存 :程序正常结束、缓存区满、使用fflush函数

 

3、无缓冲:对于终端操作采用的缓冲区

 

标准出错(stderr)

 

三、fflush函数的功能

 

刷新缓存区 的内容。

int fflush(FILE *stream);

 

四、测试源码

#include <stdio.h>

#if 0
刷新缓存的条件:程序正常结束  ‘\n’  fflush  缓存区满
int fflush(FILE *stream);
功能:刷新缓存区
注意:不能刷新stdin
#endif

int main(int argc, const char *argv[])
{
	int i;
	for(i=0; i<5; i++)
	{
		printf("%c", 'A'+i);
		fflush(stdout);
		sleep(1);
	}

	printf("\n");


	return 0;
}

测试时体会加入fflush函数和不加入时的区别。

加入后的效果:

 

 

不加入的效果:

 

 

因为程序正常退出了,所以将缓存区的内容那个刷新至标准输出了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值