資源簡介
對讀入的某個文本文件input.txt中,拆出英文單詞,輸出一個按字典順序排列的單詞表,
結果輸出在文本文件output.txt中,每個單詞一行,并在單詞后輸出該單詞出現的個數,
兩個字段之間用逗號分隔。
約定單詞僅由英文字母組成,單詞間由非英文字母分隔,相同單詞只輸出一個,大小寫不區分。
例如文本文件input.txt為:
Hello world.
Hello every one.
Let us go.
則輸出文本文件output.txt為:
every,1
go,1
hello,2
let,1
one,1
us,1
world,1
代碼片段和文件信息
/*版權:福建星網銳捷網絡有限公司
*作者:XXX?
*功能:實現從文件中讀取沒一個單詞,并對單詞進行統計,
*按字母順序排列存入另一個文件中
*時間:2010-9-2?到?2010-9-3*/
#include
#include
#include
typedef?struct?Str{
????struct?Str?*next;
????char???????*str;
????int??????????num;
}f_str;
char?*?p_strs;???????????/*input文件中是所有單詞*/
int????isf_len;??????????/*input文件的長度*/
/*從文件input中讀取文件內容,并返回給函數f_get_string*/
char?*?f_get_string()
{
????FILE?*?in_file?=?NULL;
????
????in_file?=?fopen(“d:/input.txt“?“rb“);
????if?(in_file?==?NULL)?{
????????printf(“error!“);
????}?else?{
????????fseek(in_file?0?SEEK_END);
????????isf_len?=?ftell(in_file);??????????????????/*得到文件的長度*/
????????if?(isf_len?!=?-1)?{
????????????fseek(in_file?0?SEEK_SET);??????
????????????p_strs?=?(char?*)malloc(isf_len+100);
????????????memset(p_strs?0?isf_len+100);
????????????fread(p_strs?sizeof(char)?isf_len?in_file);????/*將文件的全部內容給p_strs*/
?????????}
????}
????return?p_strs;
}
/*將input文件中所有處理后的單詞存入output文件中*/
void?f_out_string(f_str?*?head)
{
????FILE?*?out_file?=?NULL;
????f_str?*?hp;
????char?*?sstr;
????char?*?sss?=?““;
????
????out_file?=?fopen(“d:/output.txt“?“wb+“);
????if?(out_file?==?NULL)?{
????????printf(“error!“);
????}?else?{
????????hp?=?head;
????????while?(hp?!=?NULL)?{
????????????sstr?=?malloc(20);
????????????if?(strcmp(hp->str?sss)?!=?0)?{??????/*strcmp比較兩字符串的大小*/
????????????????sprintf(sstr?“%s????%d\r\n“?hp->str?hp->num);???/*將字符串型hp->str和整形的hp->num加到字符串sstr*/
????????????????fwrite(sstr?sizeof(char)?strlen(sstr)?out_file);???/*輸出字符串到out_file*/
????????????}
????????????hp?=?hp->next;
????????????free(sstr);
????????}
????????fclose(out_file);
????}
}
/*對文件中每個單詞統計,并按按字母順序存儲到鏈表中*/
f_str?*?order_str(f_str?*?head?f_str?*?fstr?int?i)
{
????f_str??*?hp?=?NULL;
????
????if?(i?==?1)?{
????????head?=?fstr;
????????fstr->next?=?NULL;
????}?else?{
????????hp?=?head;
????????while?(hp?!=?NULL)?{
????????????if?(strcmp(hp->str?fstr->str)?>?0)?{?????/*strcmp比較兩字符串的大小*/
????????????????head?=?fstr;
????????????????fstr->next?=?hp;
????????????????break;
????????????}?else?if?(strcmp(hp->str?fstr->str)?0
????????????????&&?strcmp
評論
共有 條評論