我具有比较两个文件中的字符并显示发现的错误(行+位置)的功能。
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中的另一个数据进行比较,因为那时候我想看看有多少个这样的块是相同的。我该怎么办?
答案 0 :(得分:3)
分块读取,因此fread
而不是getc
。
然后按块进行比较,因此strcmp
(或memcmp
)不是char ==
。
请不要忘记您的输入可能有不同的长度(fread
会告诉您),所以我建议您在fread
之后使用空终止两个缓冲区,或者最好在长度过长时失败不同。