setbuf更改缓冲区的大小

来源:11-2 文件流的缓冲

wxz123

2021-02-04

char buf[8192];
setbuf(file, buf);
char buf[8192];
setvbuf(file, buf, _IOLBF, 8192);

1、老师,您课上说setbuf不能更改缓冲区的大小,这句话怎么理解呢?直接把buf数组的大小buf[8192]改了不就更改缓冲区大小了吗?setvbuf不就这么改的吗?
2、另外,setvbuf的参数buf数组的大小8192和setvbuf的参数8192是一样的吗?都代表缓冲区大小?

写回答

2回答

bennyhuo

2021-02-05

setbuf虽然可以修改缓冲区的大小,但因为没有传缓冲区的大小进去,所以系统并不知道你开辟了多大,都会按照 BUF_SIZE 去使用。所以改不了

0
0

bennyhuo

2021-02-05

这两个问题的根本原因在于,你传了一个指针给setbuf setvbuf,这个指针是没有大小信息的。基于这一点你再想想这两个问题是不是有答案了。

1
0

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程