QT 比较两个文件是否一致(不限格式)

所谓不限格式就是讲文件以二进制的格式打开,逐位进行比较。

/******************************************************
说明:比较两个消息文件是否一致,如果一致返回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;
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值