标准I/O包自动创建输入输出缓冲区,那setvbuf也建立缓冲区,那么要setvbuf有啥用?
答案:2 悬赏:40 手机版
解决时间 2021-02-24 06:48
- 提问者网友:活着好累
- 2021-02-24 00:17
标准I/O包自动创建输入输出缓冲区,那setvbuf也建立缓冲区,那么要setvbuf有啥用?
最佳答案
- 五星知识达人网友:西风乍起
- 2021-02-24 00:45
“标准I/O包自动创建输入输出缓冲区”这句话不是很严谨,stdio.h库只是提供了各种接口而已,不调用任何接口是不会有缓冲区出现的。
setvbuf函数的定义:
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)setvbuf给程序员提供了一个自由操作缓冲的可能性。比如stdout默认是line buffering (mode =_IOLBF时,也就是,当有换行符被插入到stream时,数据就会被写入),我们可以通过该函数把stdout的buffer模式改写比如:
setvbuf(stdout, buffer, _IOFBF, st_blksize );就把stdout变成了full buffering(后面的size参数 = st_blksize 是个系统参数),也就是buffer满了才会执行写入动作。setbuf函数也类似,通过这些函数,你可以提升效率也可以降低效率(可能有这种需求,呵呵)。
setvbuf函数的定义:
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)setvbuf给程序员提供了一个自由操作缓冲的可能性。比如stdout默认是line buffering (mode =_IOLBF时,也就是,当有换行符被插入到stream时,数据就会被写入),我们可以通过该函数把stdout的buffer模式改写比如:
setvbuf(stdout, buffer, _IOFBF, st_blksize );就把stdout变成了full buffering(后面的size参数 = st_blksize 是个系统参数),也就是buffer满了才会执行写入动作。setbuf函数也类似,通过这些函数,你可以提升效率也可以降低效率(可能有这种需求,呵呵)。
全部回答
- 1楼网友:山有枢
- 2021-02-24 02:12
我是来看评论的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯