文字列から単語数を数えるC言語

文字列内の単語数をカウントするには、以下のように考えていきます。

  1. カウンタ変数 count を0に初期化し、単語の数をカウントします。
  2. 文字列内の各文字を、先頭から順番に見ていき、現時点の文字が空白文字か、記号であるかを判定します。
  3. 空白や句読点以外の文字の場合は、ループに入ります。
  4. 現在の文字がスペースや区切り記号の場合は、その前の文字が文字か数字かどうかを判断する。
  5. 文字、数字が含まれると単語であることが分かり、カウント数countを1増やす。
  6. ストリング全体の走査が終わると、カウンターの count の値は単語の数になります。

以下にサンプルコードを示します:

#include <stdio.h>

int countWords(char *str) {
    int count = 0;
    int isWord = 0; // 标记是否在单词中

    // 遍历字符串中的每个字符
    for (int i = 0; str[i] != '\0'; i++) {
        // 判断当前字符是否为空格或者标点符号
        if (str[i] == ' ' || str[i] == ',' || str[i] == '.' || str[i] == '?' || str[i] == '!') {
            isWord = 0; // 不在单词中
        }
        else {
            // 判断前一个字符是否是字母或数字
            if (i == 0 || str[i-1] == ' ' || str[i-1] == ',' || str[i-1] == '.' || str[i-1] == '?' || str[i-1] == '!') {
                isWord = 1; // 在单词中
                count++; // 单词计数器加1
            }
        }
    }
    return count;
}

int main() {
    char str[] = "Hello, World! This is a string.";
    int wordCount = countWords(str);
    printf("The number of words in the string is: %d\n", wordCount);
    return 0;
}

このコードを実行すると、出力された文字列内の単語数が 7 になります。

bannerAds