C言語で文字列から母音を削除する方法


  1. 文字列を一文字ずつ調べながら、母音を削除する方法:

    #include <stdio.h>
    #include <string.h>
    int isVowel(char c) {
       c = tolower(c);  // 大文字と小文字を区別しないようにするために小文字に変換する
       return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');
    }
    void removeVowels(char *str) {
       int len = strlen(str);
       int i, j;
       for (i = 0, j = 0; i < len; i++) {
           if (!isVowel(str[i])) {
               str[j] = str[i];
               j++;
           }
       }
       str[j] = '\0';  // 新しい終端文字を追加する
    }
    int main() {
       char str[1000];
       printf("文字列を入力してください: ");
       fgets(str, sizeof(str), stdin);
       removeVowels(str);
       printf("母音を削除した文字列: %s\n", str);
       return 0;
    }

    この方法では、文字列を一文字ずつ調べながら、母音であるかどうかを判定し、母音でない文字だけを残すようにします。

  2. 正規表現を使用して母音を削除する方法:

    #include <stdio.h>
    #include <string.h>
    #include <regex.h>
    void removeVowels(char *str) {
       regex_t regex;
       regcomp(&regex, "[aeiouAEIOU]", REG_EXTENDED);
       regfree(&regex);
    }
    int main() {
       char str[1000];
       printf("文字列を入力してください: ");
       fgets(str, sizeof(str), stdin);
       removeVowels(str);
       printf("母音を削除した文字列: %s\n", str);
       return 0;
    }

    この方法では、正規表現を使用して文字列中の母音を検索し、削除します。正規表現パターン[aeiouAEIOU]は、小文字と大文字の母音を含む文字をマッチさせます。

これらの方法を使用することで、C言語で文字列から母音を削除することができます。