⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 文件异同比较 文档.txt

📁 MFC编写的,比较两个文件是否相同的程序.程序很简单,主要是做一些测试或示例用.
💻 TXT
字号:
文件异同比较 文档

一.程序的总体设计和算法分析

本程序用了 MFC 框架,内部代码都用 C 实现.

首先是两个打开文件功能,用于选定两个文件,以得到它们的路径,并分别保存在两个编辑框中.

一个"开始比较"按钮,开始执行两个文件的比较工作.

在"比较结果"组中,显示比较结果:
如果两文件比较结果相同,则会在两个输出框中显示"两文件内容相同!"
如果两文件比较结果不同,则显示"两文件内容不同:",并显示出不同点的起始位置,该处的字符.

最后是一个退出按钮,用于退出程序.

二.技术文档

1.文件1,2的打开
处理函数:
void CMFCDlg::OnOpenFile1()
void CMFCDlg::OnOpenFile2()

得用API GetOpenFileName();得到文件的完整路径,再将其分别显示在两编辑框中,也可让用户直接输入文件路径到编辑框.
如果打开失败则提示,并退出;如果取消了文件打开对话框,则直接退出该函数.

2.比较按钮
处理函数:
void CMFCDlg::OnCompare()

如果输入(或得到)的文件路径过长或为空,则提示错误,并退出
	if (CountInput1 > MAX_PATH)		//文件1路径过长
	{
		MessageBox("文件1的路径太长啦!","错误",MB_OK);
		return;
	}
	if (CountInput1 == 0)			//文件1路径为空
	{
		MessageBox("文件1路径不能为空!");
		return;
	}

然后得到文件编辑框中的文本(路径):
	m_input1.GetLine(1,TextContent1,MAX_PATH);
	m_input2.GetLine(1,TextContent2,MAX_PATH);
开始打开文件,如果失败,则提示并退出

	FILE *in1,*in2;
	if ((in1=fopen(TextContent1,"rb"))==NULL)
	{
		MessageBox("打开比较文件1时出错!","错误",MB_OK);
		return;
	}

对文件进行逐字节的比较,如果比较到不同的地方,则显示出信息,并退出该函数
否则显示"两文件内容相同!"消息

	while(!feof(in1) || !feof(in2))
	{
		if (ch1 != ch2)		//两文件内容不相同
		{
			m_output1.SetSel(0,-1);
			m_output1.ReplaceSel("两文件内容不同:\r\n");
			m_output2.SetSel(0,-1);
			m_output2.ReplaceSel("两文件内容不同:\r\n");

			sprintf(diff1,"不同点:\r\n文件1:\r\n位置:%d\r\n字符:%c",ftell(in1),ch1);
			sprintf(diff2,"不同点:\r\n文件2:\r\n位置:%d\r\n字符:%c",ftell(in2),ch2);

			m_output1.ReplaceSel(diff1);
			m_output2.ReplaceSel(diff2);

			return;
		}
		ch1=fgetc(in1);
		ch2=fgetc(in2);
	}
	//两文件内容相同
	m_output1.SetSel(0,-1);
	m_output1.ReplaceSel("两文件内容相同!");
	m_output2.SetSel(0,-1);
	m_output2.ReplaceSel("两文件内容相同!");

三.用户文档
1.直接在两文件编辑框内输入两个待比较文件的路径,或者单击编辑框后在的按钮,即可弹出一个打开文件的对话框,在这里直接选择文件,然后"确定"

2.选好两个文件后,单击"开始比较",就开始进行文件的比较

3.比较结果解释:
如果文件相同,则会在"比较结果"组框中的两个输出框内分别显示"两文件内容相同!"的字符
如果文件内容不相同,则显示类型如下信息:

两文件内容不同:
不同点:
文件2:
位置:1
字符:<

其中,文件2是指比较中的第2个文件,位置是指不同字符的起始位置(以字节计算),字符后在的符号为当前不同的字符

四.源程序代码清单 见所以程序代码.

五.测试数据和测试过程记录:

一般情况:

双击运行该程序
选取同一个相同文件到"文件1"和"文件2"
单击"开始比较"
显示出"两文件内容相同!"

选取不同内容的两个文件,开始比较,显示出不是位置和不同处的字符

特殊情况:

将任意文件选择框内容清空或两个都清空,将点击"开始比较",将显示"文件1/2路径不能为空!"的提示

点击打开文件,弹出打开文件对话框时,点击"取消",没有任何提示

六.遇到的问题及解决方法分析

1.运行程序后,有任意一个编辑框内为空,点击"开始比较"里,会弹出错误对话框

解决方法:先判断是否为空,如果为空,则提示,防止意外的错误框的出现.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -