为什么setvbuf()函数在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("%sn",buff2);
system("PAUSE");
return 0;
}

这是文件的内容

line 1
line 2
line 3

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

line 1
line 2
line 3 3

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

实现是否或以何种方式使用提供给setvbuf的缓冲区是未指定的。当它与stdio FILE关联时,不应该尝试从其内容中派生任何有意义的内容。

相关内容

  • 没有找到相关文章

最新更新