當前位置:成語大全網 - 書法字典 - c分詞算法詞典

c分詞算法詞典

事實上,用gets讀取整行然後處理它更容易。在這裏使用getc會使程序變得復雜並且容易出錯。

舉個例子供妳參考,看看註釋,試著理解:

# include & ltstdio.h & gt

# include & ltstring.h & gt

Struct WORD_FOUND //用於存儲結果的結構。

{

char SZ word【256】;

int nCount

};

WORD _ FOUND g _ WORD FOUND【100】= { {““,0 } };

int g _ n match = 0;

int main()

{

char SZ text【1024】;

char SZ word【512】;

FILE * fp

int I;

if((FP = fopen(“case 1。in“,r“))= = null)//打開文件。

{printf(“錯誤“);返回1;}//打不開就輸出錯誤。

while(fgets(SZ text,sizeof(SZ text)-1,FP)//在這裏讀取整行,這樣更有效且不容易出錯。

{

char *tmp=szText,* end = SZ text+strlen(SZ text);

char * endChr

while(tmp & lt;end)

{

while(* tmp = =‘‘| | * tmp = =‘\ n‘| | * tmp = =‘\ t‘)tmp++;//在此跳過空格

endChr = tmp

while (* end chr & amp;& amp*endChr!=‘\ n‘& amp;& amp*endChr!=‘\ r‘& amp;& amp*endChr!=“““)end chr++;//在此處查找下壹個空格

memset(SZ word,0,sizeof(SZ word));

strncpy(SZ word,tmp,end chr-tmp);//找到的字符存儲在szWord中。

bool bFound = false

for(I = 0;我& ltg _ nMatchi++)//查找找到的字符。

{

if(strcmp(g _ word found【I】。szword,SZ word = = 0)//如果匹配,

{

g _ word found【I】。ncount++;//加1

bFound = true

打破;

}

}

如果(!b基金& amp& ampstrlen(SZ word)& gt;0)//如果不匹配,則將字符存儲在g_WordFound中。

{

strcpy(g _ word found【g _ n match】。szWord,SZ word);

g _ word found【g _ n match】。ncount++;

g _ n match++;

}

tmp = endChr

if(tmp & gt;= end)break;

}

}

//在此打印結果

for(I = 0;我& ltg _ nMatchi++)

{

printf(“% s = % d \ n“,g _ word found【I】。szWord,g _ word found【I】。nCount);

}

返回0;

}