指定流缓冲区

9 篇文章 0 订阅
6 篇文章 0 订阅

指定流缓冲区

对于任意流,系统将默认指定其流缓冲区类型,如果用户期望自己指定缓冲区的位置,可以调用setbuf()和setvbuf()函数更改其缓冲区类型,从而可以便捷地访问缓冲区中的内容。
setbuf声明如下:
extern void setbuf(FILE * _restrict _stream,char * _restrict_buf)
此函数第1个参数为要操作的流对象,第二个参数buf必须指向一个长度为为BUFSIZ的缓冲区。如果将buf设置为NULL,则关闭 缓冲区。
如果执行成功,将返回0,否则返回非0值。
setvbuf函数声明如下:
extern void setvbuf (FILE * _restrict_stream,char * _restrict_buf,int _modes,size_t _n)
此函数的第1个参数为要操作的流对象,第2个参数buf指向一个长度为第四个参数指示大小的缓冲区,第3个参数为缓冲区类型,分别定义如下:
#define _IOFBF 0 //全缓冲
#define _IOLBF 1 //行缓冲
#define _IONBF 2 //无缓冲
如果指定一个不带缓冲区的流,则忽略buf和size参数。如果指定全缓冲区或行缓冲区,则buf和size可选择地指定一个缓冲区及其长度(大于等于128字节)。如果指定该流是带缓冲区的,而buf是NULL,则标准I/O库将自动为该流分配适当长度的缓冲区。适当长度指的是由文件属性数据结构(struct stat)的成员st_blksize所指定的值,如果系统不能为该流决定此值(例如,若此流涉及一个设备或一个管道),则分配长度为BUFSIZ的缓冲区。
此函数如果执行成功,将返回0,否则返回非0值。
下面是修改buf大小写文件的实例程序。其源代码如下:
来源:《Linux高级程序设计》人民邮电出版社 杨宗徳 吕光宏 刘雍 编著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值