當前位置:成語大全網 - 書法字典 - 然後按字典順序輸出單詞。

然後按字典順序輸出單詞。

事實上,用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 (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;

}