比较两个文件的每1kb内容,而不是逐个字符地比较

时间:2019-05-07 10:04:30

标签: c

我具有比较两个文件中的字符并显示发现的错误(行+位置)的功能。

 void compareFiles(FILE *fp1, FILE *fp2) 
 { 
    char ch1 = getc(fp1); 
    char ch2 = getc(fp2); 
    int error = 0, pos = 0, line = 1; 

    while (ch1 != EOF && ch2 != EOF) 
    { 
        pos++; 

        if (ch1 == '\n' && ch2 == '\n') 
        { 
            line++; 
            pos = 0; 
        } 

        if (ch1 != ch2) 
        { 
            error++; 
            printf("Line Number : %d \tError"
               " Position : %d \n", line, pos); 
        } 

        ch1 = getc(fp1); 
        ch2 = getc(fp2); 
    } 

    printf("Total Errors : %d\t", error); 

但是我想获取每1kb的数据,并将其与file2中的另一个数据进行比较,因为那时候我想看看有多少个这样的块是相同的。我该怎么办?

1 个答案:

答案 0 :(得分:3)

分块读取,因此fread而不是getc

然后按块进行比较,因此strcmp(或memcmp)不是char ==

请不要忘记您的输入可能有不同的长度(fread会告诉您),所以我建议您在fread之后使用空终止两个缓冲区,或者最好在长度过长时失败不同。