📄 文件异同比较 文档.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 + -