文本文件單詞的檢索與計(jì)數(shù)_第1頁
文本文件單詞的檢索與計(jì)數(shù)_第2頁
文本文件單詞的檢索與計(jì)數(shù)_第3頁
文本文件單詞的檢索與計(jì)數(shù)_第4頁
文本文件單詞的檢索與計(jì)數(shù)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、文本文件單詞的檢索與計(jì)數(shù) 設(shè)計(jì)題目: 文本文件單詞的檢索與計(jì)數(shù) 班 級 : 計(jì)科一班 學(xué) 號 : 完成日期: 2013/03/28 文本文件單詞的檢索與計(jì)數(shù)實(shí)驗(yàn)?zāi)康暮鸵?. 實(shí)踐用字符串解決具有一定規(guī)模的問題的方法和編程思路;2. 掌握文件的操作方法;3. 編寫實(shí)驗(yàn)報(bào)告;實(shí)驗(yàn)內(nèi)容要求編程建立一文本文件,每個(gè)單詞不含空格且不跨行,單詞由字符序列構(gòu)成且區(qū)分大小寫,統(tǒng)計(jì)給定單詞在文本文件中出現(xiàn)的總次數(shù),檢索輸出某個(gè)單詞出現(xiàn)在文本中的行號、在該行中出現(xiàn)的次數(shù)及位置。實(shí)驗(yàn)步驟1、 問題分析該設(shè)計(jì)分三個(gè)部分實(shí)現(xiàn):一, 建立文本文件,文件名由用戶鍵盤輸入;二, 給定單詞的計(jì)數(shù),輸入一個(gè)不含空格的單詞,統(tǒng)計(jì)

2、輸出該單詞在文本中的出現(xiàn)次數(shù);三, 檢索給定單詞,輸入一個(gè)單詞,檢索并輸出該單詞所在的行號、該行中出現(xiàn)的次數(shù)及在該行中的相應(yīng)位置。2、 系統(tǒng)設(shè)計(jì)l 設(shè)計(jì)菜單內(nèi)容程序運(yùn)行后、給出菜單項(xiàng)的內(nèi)容和輸入提示:1、 建立文本文件;2、 單詞子串的計(jì)數(shù);3、 單詞子串的定位;4、 退出整個(gè)程序;請選擇1-4:l 建立文本文件函數(shù)n 實(shí)現(xiàn)思路1) 定義一個(gè)串變量;2) 定義文本文件;3) 輸入文件名,打開該文件;4) 循環(huán)讀入文本行,寫入文本文件While(不是文件輸入結(jié)束) 讀入一文本行到串變量; 串變量寫入文件; 輸入是否結(jié)束(輸入標(biāo)志);5) 關(guān)閉文件;n 函數(shù)名 void CreatTextFile

3、()l 文本文件單詞計(jì)數(shù)函數(shù)n 實(shí)現(xiàn)思路1) 輸入要檢索的文件名,打開相應(yīng)的文件;2) 輸入要檢索統(tǒng)計(jì)的單詞;3) 循環(huán)讀入文本文件,讀入一行,將其送入定義好的串中,并求該串的實(shí)際長度,調(diào)用串匹配函數(shù)進(jìn)行計(jì)數(shù)。While(不是文件結(jié)束) 讀入一行到串中; 求出串長度; 模式匹配函數(shù)計(jì)數(shù);4) 關(guān)閉文件,輸出統(tǒng)計(jì)結(jié)果;n 函數(shù)名 void SubStrCount();l 檢索單詞出現(xiàn)在文本文件中的行號、位置及在該行中出現(xiàn)的次數(shù)函數(shù)n 實(shí)現(xiàn)思路1) 輸入要檢索的文件名,打開相應(yīng)的文件;2) 輸入要檢索統(tǒng)計(jì)的單詞;3) 行計(jì)數(shù)器初值置0;4)While(不是文件結(jié)束) 讀入一行到指定串中; 求出串長

4、度;行計(jì)數(shù)置初值; 調(diào)用模式匹配函數(shù)匹配單詞定位、該行匹配單詞計(jì)數(shù); 行計(jì)數(shù)器+1; If(行計(jì)數(shù)器!=0) 輸出行號、該行有匹配單詞的個(gè)數(shù)及相應(yīng)位置;n 函數(shù)名void SubStrInd()3、 完整的程序清單/*程序名稱:單詞統(tǒng)計(jì)和定位程序程序描敘:程序?qū)崿F(xiàn)四個(gè)功能,打開文件,統(tǒng)計(jì)單詞,定位單詞,打印文件內(nèi)容。用到文件指針的移動(dòng)、字符串比較、函數(shù)分析及建立。 檀國林時(shí)間:2013-03-28*/#include<stdio.h>#include<string.h>#include<stdlib.h>#include<color.h>#def

5、ine MAX_FIND_WORD_LENGTH 60/查能找的單詞最大長度#define MAX_FIND_WORD_NUM_PER_LINE 15/每行最多存在要查找的單詞個(gè)數(shù)#define MAX_LINE 200/最多有這么多行FILE * fp;char findWordMAX_FIND_WORD_LENGTH;/要查找的單詞int isfind, locationMAX_LINEMAX_FIND_WORD_NUM_PER_LINE;int menu_select(void);int openFile(void);int display(void);int getWordNum(vo

6、id);void colordispaly(void);int getWordLocate(void);int main(void)int flag = 1;while(flag)switch(menu_select()case 1: openFile();break;case 2: getWordNum();break;case 3: getWordLocate();break;case 4: display();break;case 0:fclose(fp);flag = 0;printf("再見!n");break;default :;return 0;int men

7、u_select(void)int choice;char str40;printf("1.打開文件t2.統(tǒng)計(jì)單詞個(gè)數(shù)t3.定位單詞t4.打印文件t0.推出程序n");scanf("%d", &choice);if(choice > -1 && choice < 5)return choice;elseprintf("輸入有誤!請重新輸入n");gets(str);/讀掉緩沖區(qū)內(nèi)容return -1;int openFile(void)char fileNameMAX_FIND_WORD_LENGT

8、H;printf("你輸入你要打開的文件路徑或文件名n");scanf("%s", fileName);printf("%s", fileName);fp = fopen(fileName, "r");if(!fp)printf("打開文件失敗!n");return -1;elseprintf("打開文件成功!n");return 0;int display(void)char ch;int line = 0;rewind(fp);printf("%-2d: &qu

9、ot;, +line);while(ch = fgetc(fp) != EOF)if(ch = 'n')printf("n");printf("%-2d: ", +line);elseprintf("%c", ch);printf("n");return 0;int getWordNum(void)int len, i = 0, sum = 0;char ch, findResultMAX_FIND_WORD_LENGTH;rewind(fp);printf("請輸入你要查找的單詞:n&q

10、uot;);scanf("%s", findWord);len = strlen(findWord);while(ch = fgetc(fp) != EOF)findResulti = ch;i+;if(i = len)findResulti = '0'if(strcmp(findWord, findResult) = 0)sum+;fseek(fp, -(len - 1), 1);i = 0;printf("單詞%s有%d個(gè)n", findWord, sum);return 0;/根據(jù)location數(shù)組彩色打印void colordi

11、splay(void)char ch, flag = '0'int j = 0, line = 0, index = 0, num = 0, len = strlen(findWord);if(!isfind)printf("沒有找到!n");elserewind(fp);printf("%-2d: ", +line);while(ch = fgetc(fp) != EOF)if(ch = 'n')j = 0;index = 0;printf("n");printf("%-2d: "

12、, +line);elseif(locationlineindex = j + 1)/當(dāng)前要打印的字符即為查找詞首字母index+;flag = '1'BLACK_RED;printf("%c", ch);elseprintf("%c", ch);if(flag = '1')num+;if(num = len)BLACK_WHITE;num = 0;flag = '0'j+;printf("n");/*for(i = 0; i < MAX_LINE; i+)for(j = 0; j

13、 < MAX_FIND_WORD_NUM_PER_LINE; j+)if(locationij != 0)printf("第%d行第%d位置找到n", i, locationij);*/*函數(shù)名稱:計(jì)算查找詞位置。函數(shù)描敘:存放在location數(shù)組里,并計(jì)算是否查找到isfind。f(line)=(line / (strlen(findWord) / 2 + 1) + 1);讀到n字符個(gè)數(shù)line與行數(shù)的關(guān)系。*/int getWordLocate(void)int index = 0, preline;/第index位置上找到字符int len, i = 0, j

14、 = 0, line = 0;/第'line'行第j個(gè)字符找到要查找的findWordchar ch, findResultMAX_FIND_WORD_LENGTH;rewind(fp);printf("請輸入你要查找的單詞:n");scanf("%s", findWord);len = strlen(findWord);for(i = 0; i < MAX_LINE; i+)for(j = 0; j < MAX_FIND_WORD_NUM_PER_LINE; j+)locationij = 0;i = j = isfind = 0;while(ch = fgetc(fp) != EOF)findResulti = ch;i+;if(ch = 'n')line+;j = 0;if(i = len)findResulti = '0'if(strcmp(findWord, findResult) = 0)isfind = 1; /查找到if(preline != (line / (strlen(findWord

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論