1
使用以下代碼,我可以比較兩個文件並找到它們的起始位置不同,但現在想要找到所有不同的位置並打印出來,而不僅僅是第一個地方。我知道這是一個循環,但我不知道如何做循環。我認爲離開while循環的原因是,將break語句取出,但它不起作用。 我怎麼稱呼它:查找兩個文件不同的所有字節位置
if ((fp1 != NULL) && (fp2 != NULL)){
compare_two_binary_files(fp1, fp2);
}
它是如何實現的:
void compare(FILE *f1, FILE *f2)
{
char ch1, ch2;
int flag = 0;
while (((ch1 = fgetc(f1)) != EOF) &&((ch2 = fgetc(f2)) != EOF)){
if (ch1 == ch2)
{
flag = 1;
continue;
}
/*
* If not equal then returns the byte position
*/
else
{
fseek(f1, -1, SEEK_CUR);
flag = 0;
printf("Byte pos where two files differ is %d\n", ftell(f1)+1);
break;
}
}
}
爲什麼是標誌變量有?當你刪除中斷並試圖獲得什麼輸出? – const
'break'結束你的while循環。去掉它。你也不需要'continue'語句。使用'fseek(-1)'和'ftell()+ 1'似乎是不必要的複雜性。 –