所謂不限格式就是講文件以二進制的格式打開,逐位進行比較。
/******************************************************
說明:比較兩個消息文件是否一致,如果一致返回0
輸入:待比較消息的路徑
***********************************************************/
int CompareMsg(char* msg1, char* msg2);
CompareMsg(char* msg1, char* msg2)
{
//將2個消息各自讀取到buffer中
FILE *pOne, *pTwe;
long lsize1, lsize2;
char* buffer1 = NULL;
char* buffer2 = NULL;
size_t result1, result2;
pOne = fopen(msg1, "rb");
pTwe = fopen(msg2, "rb");
if ((pOne == NULL) || (pTwe == NULL))
{
fclose(pOne);
fclose(pTwe);
return 1;
}
fseek(pOne, 0, SEEK_END);
lsize1 = ftell(pOne);
//rewind(pOne);
fseek(pOne, 0, SEEK_SET);
fseek(pTwe, 0, SEEK_END);
lsize2 = ftell(pTwe);
rewind(pTwe);
if (lsize1 != lsize2)
{
fclose(pOne);
fclose(pTwe);
return 1;
}
buffer1 = new char[lsize1];
buffer2 = new char[lsize2];
if ((buffer1 == NULL) || (buffer2 == NULL))
{
fclose(pOne);
fclose(pTwe);
delete[]buffer1;
delete[]buffer2;
return 1;
}
result1 = fread(buffer1, 1, lsize1, pOne);
result2 = fread(buffer2, 1, lsize2, pTwe);
if ((result1 != lsize1) || (result2 != lsize2))
{
fclose(pOne);
fclose(pTwe);
delete[]buffer1;
delete[]buffer2;
return 1;
}
int result = memcmp(buffer1, buffer2, lsize1);
fclose(pOne);
fclose(pTwe);
delete[]buffer1;
delete[]buffer2;
return result;
}