?? 文件異同比較 文檔.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 + -