为什么会导致分段错误?
int compareFiles(const char* outFile, const char* expectedFile) {
int N = 10000;
FILE* f1;
FILE* f2;
char buf1[N];
char buf2[N];
f1 = fopen(expectedFile, "r");
f2 = fopen(outFile, "r");
do {
size_t r1 = fread(buf1, 1, N, f1);
size_t r2 = fread(buf2, 1, N, f2);
if (r1 != r2 ||
memcmp(buf1, buf2, r1)) {
return 0;
}
} while (!feof(f1) || !feof(f2));
return feof(f1) && feof(f2);
}
答案 0 :(得分:0)
检查fopen的返回值 - 如果返回NULL,则后续文件操作会出现seg错误。
答案 1 :(得分:-2)
您的代码完全正确,并且正在我的机器中运行。在这种情况下,只有在没有要读取的输入文件时才会出现分段。