0

読み取り用に 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ループは、テキスト ファイル内の名前の出現回数ではなく、名前のいずれかが行末に出現する回数をカウントするだけです。このループを調整して、この問題に対処するにはどうすればよいですか?

事前にアドバイスをいただきありがとうございます。

4

2 に答える 2