舉個例子給妳參考,看看筆記試著理解壹下:
# 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 (sztext,sizeof (sztext)-1,FP))//這裏讀整行,比較有效,不容易出錯。
{
char *tmp=szText,* end = SZ text+strlen(SZ text);
char * endChr
while(tmp & lt;結束)
{
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(szWord,0,sizeof(SZ word));
strncpy(szWord,tmp,end chr-tmp);//找到的字符存儲在szWord中。
bool bFound = false
for(I = 0;我& ltg _ nMatchI++)//查找找到的字符。
{
If (strcmp (g _ wordfound [i].szword,SZ word)= = 0)//如果匹配,
{
g_WordFound[i]。ncount++;//加上1
bFound = true
打破;
}
}
如果(!發現與發現。& ampstrlen(szWord)>0)//如果不匹配,將字符存儲在g_WordFound中。
{
strcpy(g_WordFound[g_nMatch])。szWord,SZ word);
g_WordFound[g_nMatch]。ncount++;
g _ n match++;
}
tmp = endChr
if(tmp & gt;= end)break;
}
}
//在此打印結果
for(I = 0;我& ltg _ nMatchi++)
{
printf("%s = %d\n ",g_WordFound[i]。szWord,g_WordFound[i]。nCount);
}
返回0;
}