読み取り用に 2 つのファイルを開くプログラムを作成しています。最初のファイルには、フォームの配列に保存する 20 個の名前が含まれていますNames[0] = John\0
。2 番目のファイルは、20 個の名前のそれぞれが多数出現する大きなテキスト ファイルです。
プログラムで 2 番目のファイル全体をスキャンする必要があり、名前の 1 つが見つかるたびに変数Count
がインクリメントされ、プログラムの完了時に、テキストに表示されるすべての名前の総数が に格納されCount
ます。
名前の出現回数を検索してカウントするループは次のとおりです。
char LineOfText[85];
char *TempName;
while(fgets(LineOfText, sizeof(LineOfText), fpn)){
for(a = 0; a<NumOfNames; a++){
TempName = strstr(LineOfText, Names[a]);
if(TempName != NULL){
Count++;
}
}
}
私が何をしても、このループは期待どおりには機能しませんが、何が問題なのかを発見しました (私はそう思います!)。私の問題は、配列内の各名前が NULL で終了することですが、名前がテキスト ファイルに表示される場合、行の最後の単語として発生しない限り、名前は NULL で終了しません。したがって、このwhile
ループは、テキスト ファイル内の名前の出現回数ではなく、名前のいずれかが行末に出現する回数をカウントするだけです。このループを調整して、この問題に対処するにはどうすればよいですか?
事前にアドバイスをいただきありがとうございます。