一.實驗目的
熟悉並掌握字串的處理技術,熟悉並掌握文字檔案的操作技術,進而對一般的文字處理軟體的設計方法有所了解。
二.實驗題目
1.統計一篇英文**中單詞的個數。
2.語言文字研究人員常常需要對某些詞彙的使用頻率進行統計。試幫助他們設計乙個程式,統計某篇英文**中某些詞彙的出現次數和位置。設英文**已存於乙個文字檔案中,待統計的詞匯集要一次輸入完畢,即統計工作應在程式的一次執行之後全部完成。程式的輸出結果是每個詞的出現次數以及出現位置所在行的行號。
說明:英文**必須儲存在檔案或資料庫中。
三.實現提示
1.出現位置所在行的行號可以用鍊錶儲存。若某詞在某行中出現了不止一次,不必存多個相同的行號。
2.待統計詞彙可以完全由小寫字母組成,但文字檔案中或許存在大寫字母,程式應能夠識別並予以正確統計。
3. 下表中列出的用於檔案操作的c標準函式可以在程式中呼叫。
識別符號型別
功 能
fopen
函式用於開啟乙個外部檔案
fgetc
函式從外部檔案讀取乙個字元
fclose
函式用於關閉乙個檔案
eof變數
用於判斷檔案是否結束
其中,fopen的呼叫方式為 fp=fopen(filename,"r")),filename指定要開啟的外部檔名,它是乙個字串型別的常量,「r」指定檔案的開啟方式為唯讀開啟。返回值fp為乙個file* 型別的指標,指向被開啟的檔案。fgetc的呼叫方式為c=fgetc(fp),c為讀取得字元。
下面是乙個程式片斷,該程式的功能是顯示上文字檔案readme.txt的內容。
if((fp=fopen(「readme.txt」,"r"))==null)
c=fgetc(fp);
while(c!=eof)//文字沒結束
/*
1.統計英文單詞的數量
2.統計單詞出現的次數和出現的位置
a.可以用鍊錶儲存出現的位置,如果同一行出現很多單詞,可以不用儲存多個行號
b.檔案中字母大小寫應該進行識別,即不區分大小寫
*/#include #include #include "string.h"
#include typedef struct _statestate;
typedef struct _link // 定義該鍊錶是為了儲存不重複出現的單詞
link;
int main(int argc, _tchar* argv)
else
*/if ((c>='a'&&c<='z')||(c>='a'&&c<='z')||(c=='\''))
word[pos++]=c;
} //pos>0解決了可能存在多個空格的情況" "
else if (pos>0)
p->next=state;
//單詞數++
ptmp->num++;
break;
} ptmp = ptmp->next;
} // 如果鍊錶中沒有當前單詞,在鍊錶末尾插入節點
if (ptmp == null)
else // 此處為第一次出現單詞的時候
head = pnow = ptmp;
} pos=0;
} if(c=='\n')
} fclose(fp); // 對檔案進行操作,關閉檔案
// 讀取鍊錶,輸出單詞及其出現的個數
ptmp = head;
file *fp1 = fopen("text3_result.txt","w");
while (ptmp)
fprintf(fp1,"\n");
ptmp = ptmp->next;
} fclose(fp1);
return 0;
}
字串處理 字串反轉
請原諒博主今天很閒,於是乎博主又開始更新微博了。這次要更新的問題是 編寫乙個函式,反轉乙個單詞的順序。例如 do or do not,there is no try.就要反轉成 try.no is there not,do or do 大家要認真看看這道題,這道題和大家想象的貌似有點不同。首先字串反...
字串處理
uncode與ansi字串轉換 我們使用windows函式multibytetowidechar將多位元組字串轉換成寬字元字串。函式如下 int multibytetowidechar uintcodepage dworddwflags lpcstrlpmultibytestr intcbmulti...
字串處理
byte array new byte 2 array system.text.encoding.default.getbytes 啊 int i1 short array 0 0 int i2 short array 1 0 unicode解碼方式下的漢字碼 array system.text.e...