繁体   English   中英

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

[英]Why does this cause a segmentation fault?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM