繁体   English   中英

为什么setvbuf()函数会增加C语言中的缓冲区?

[英]Why does setvbuf() function adds growths to the buffer in C?

我正在尝试使用c中的setvbuf()函数将文件的内容存储在缓冲区中,这是这样做的代码:

#include <stdio.h>
#include <string.h>

int main() {

FILE *fp=fopen("test.txt","r+");
char buff[BUFSIZ];
char buff2[BUFSIZ];

setvbuf(fp,buff2,_IOFBF,BUFSIZ);
fgets(buff,BUFSIZ,fp);
printf("%s\n",buff2);

system("PAUSE");
return 0;
}

这是文件的内容

line 1
line 2
line 3

但是当我执行代码时,控制台显示:

line 1
line 2
line 3 3

它来自输出末尾的额外字符?

一个实现是否使用提供给setvbuf的缓冲区还是以哪种方式未指定。 尝试从与stdio FILE相关联的内容中派生出有意义的东西不是您应该做的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM