두 개의 이진 파일이 있는데이를 Byte By Byte로 비교하려고합니다. 나는 그렇게 할 수있는 다음 코드를 내놓았다 :두 파일 비교 Byte Byte
int CompareFiles(char *pFname1, char *pFname2)
{
FILE *pFile1,*pFile2;
long lSize1, lSize2; // file length
int i=0;
char tmp1, tmp2;
pFile1 = fopen(pFname1,"r");
pFile2 = fopen(pFname2,"r");
// obtain file size:
fseek (pFile1 , 0 , SEEK_END);
lSize1 = ftell (pFile1);
rewind (pFile1);
// obtain file size:
fseek (pFile2 , 0 , SEEK_END);
lSize2 = ftell (pFile2);
rewind (pFile2);
if (lSize1 != lSize2) {
printf("File sizes differ, %d vs. %d\n",lSize1,lSize2);
return (ERROR);
}
for (i=0;i<lSize1;i++) {
fread(&tmp1, sizeof(char), 1, pFile1+i);
fread(&tmp2, sizeof(char), 1, pFile2+i);
if (tmp1 != tmp2) {
printf("%x: tmp1 0x%x != tmp2 0x%x\n",i , tmp1, tmp2);
}
}
return (OK);
}
을하지만 어떤 이유로, 그것은 진행되지 않는 파일의 포인터처럼 보이는 그것은 전체 길이 서로 동일한 바이트를 비교 유지 for
루프. 왜 그렇게? 여기서 내가 뭘 잘못하고 있니?
팁을 사용 : 각 바이트를 반복하는 대신 memcmp를 사용하십시오. http://www.cplusplus.com/reference/cstring/memcmp/?kw=memcmp –