C言語でテキスト内の単語の数を数える方法は何ですか?

テキスト内の単語の数をカウントするには、次の手順に従うことができます。

  1. テキストファイルを開いて、内容を読み取る。
  2. ファイルの内容を一文字ずつ確認し、それが文字または数字であれば、その文字を一時的な文字列に追加します。
  3. 非文字または数字の文字に遭遇した場合、一時文字列が空でないかどうかを判定し、空でない場合はその文字列の単語をカウントして一時文字列をクリアします。
  4. テキスト内容をすべて巡回するまで続けます。
  5. 最終的に単語の数を統計して出力します。

以下は簡単なサンプルコードです。

#include <stdio.h>
#include <ctype.h>

int main() {
    FILE *file;
    char ch;
    char word[50];
    int count = 0;
    
    file = fopen("text.txt", "r");
    
    if (file == NULL) {
        printf("Unable to open file.\n");
        return 1;
    }
    
    while ((ch = fgetc(file)) != EOF) {
        if (isalnum(ch)) {
            strncat(word, &ch, 1);
        } else {
            if (strlen(word) > 0) {
                count++;
                word[0] = '\0';
            }
        }
    }
    
    if (strlen(word) > 0) {
        count++;
    }
    
    printf("Total words: %d\n", count);
    
    fclose(file);
    
    return 0;
}

上記の例コードでは、集計するテキストが “text.txt” という名前のテキストファイルに保存されていると仮定しています。コードはファイル内の文字を一つずつ読み取り、その文字が文字または数字であるかどうかを判断します。文字または数字である場合、その文字を一時的な文字列 “word” に追加します。文字ではないまたは数字でない文字に遭遇した場合、一時的な文字列が空でないかどうかを判断し、そうであればカウントを増やして一時的な文字列をクリアします。最終的に、ワードの数を出力します。

bannerAds