如果我明确声明缓冲区大小,我似乎只能将文件读入内存。这工作
#include <stdio.h>
int main(){
FILE *fp = fopen("test.log", "rb");
char buffer[37];
fread(buffer, 1, 36, fp);
printf("%s", buffer);
}
这会将垃圾添加到输出
#include <stdio.h>
int main(){
FILE *fp = fopen("test.log", "rb");
fseek(fp, 0, SEEK_END);
long siz = ftell(fp);
rewind(fp);
char buffer[siz + 1];
fread(buffer, 1, siz, fp);
printf("%s", buffer);
}
答案 0 :(得分:7)
在buffer[siz]='\0';
printf("%s", buffer);
答案 1 :(得分:0)
尝试不同的方法 - 使用“记忆图”。它的作用是允许您像访问内存块一样访问该文件。这可以显着提高性能,同时简化代码。
了解详情