请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

setbuf更改缓冲区的大小

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回答

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

0 回复 有任何疑惑可以回复我~
bennyhuo 2021-02-05 05:52:26

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

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信