为什么setvbuf()函数会在C中为缓冲区增加增长?

时间:2016-08-07 00:43:37

标签: c file buffer

我试图使用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

它来自输出结尾的附加字符?。

1 个答案:

答案 0 :(得分:2)

未指定实现是否以及以何种方式使用提供给setvbuf的缓冲区。尝试从与stdio FILE相关联的内容中获取有意义的内容时,您不应该这样做。