0

为什么这会导致分段错误?

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);
}
4

2 回答 2

0

检查 fopen 的返回值 - 如果返回 NULL,您将在后续文件操作中出现 seg 错误。

于 2013-10-21T12:17:03.017 回答
-2

您的代码完全正确,并且可以在我的机器上运行。在这种情况下,只有在没有要读取的输入文件时才会出现分段。

于 2013-10-21T12:32:07.077 回答