【C言語】文字列から母音を削除する方法をわかりやすく解説
母音を削除するロジック
文字列から母音を削除するときの基本的な考え方はシンプルです。文字列の先頭から1文字ずつ走査し、母音(a・e・i・o・u、およびそれぞれの大文字)に一致する文字が見つかった場合には、その位置以降の文字をすべて1つ前に詰めて、文字列の長さを1減らします。この処理を繰り返すことで、文字列中のすべての母音を取り除くことができます。
for(i=0; i<len; i++) // i<len の間繰り返す{
if(str[i]=='a' || str[i]=='e' || str[i]=='i' || // 母音かどうかを判定
str[i]=='o' || str[i]=='u' || str[i]=='A' ||
str[i]=='E' || str[i]=='I' || str[i]=='O' ||
str[i]=='U'){
for(j=i; j<len; j++){
str[j]=str[j+1];
}
len--;
}
}プログラム例
以下は、入力された文字列から母音を削除するC言語のサンプルプログラムです。
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main(){
char str[20];
int len, i, j;
clrscr();
printf("文字列を入力してください:");
gets(str);
len=strlen(str);
for(i=0; i<len; i++){
if(str[i]=='a' || str[i]=='e' || str[i]=='i' || str[i]=='o' || str[i]=='u' || str[i]=='A' ||
str[i]=='E' || str[i]=='I' || str[i]=='O' || str[i]=='U'){
for(j=i; j<len; j++){
str[j]=str[j+1];
}
len--;
}
}
printf("母音を削除した後の文字列:%s",str);
getch();
}実行結果
上記のプログラムを実行すると、次のような出力が得られます。
文字列を入力してください:TutorialsPoint 母音を削除した後の文字列:TtralsPint
補足:モダンな環境での注意点
このサンプルで使用している gets() は、バッファオーバーフローを引き起こす危険があるため、C11規格以降では廃止されています。実際の開発では fgets(str, sizeof(str), stdin) の使用が推奨されます。また、clrscr() や getch() はTurbo Cなど一部の古い開発環境に固有の関数であり、GCCやClangなどの一般的なコンパイラでは利用できません。その場合は、これらの行を削除するか、getchar() などに置き換えてください。
-
文字列とは何か?C言語での文字列の宣言と初期化方法を徹底解説
C言語における文字列(string)とは、複数の文字を並べた「文字の配列」、すなわち文字の集合体のことです。C言語には文字列型という専用のデータ型が存在しないため、char型の配列として文字列を扱います。 文字列の宣言 文字列は、以下の形式で宣言します。 char 文字列名 [サイズ]; たとえば char a[50]; と記述すると、最大50文字まで格納できる文字列が定義されます。なお、終端を表すヌル文字(\0)のぶんも領域が必要なため、実際に格納できるのは「サイズ − 1」文字である点に注意しましょう。 文字列の初期化 文字列の初期化には、主に次の2つの方法があります。 1. 単一文
-
セットを使って文字列内の母音の数をカウントするPythonプログラム
本記事では、Pythonを使って文字列内に含まれる母音の数をカウントする方法について解説します。セット(set)を活用した効率的な実装を中心に、初心者の方にもわかりやすく説明していきます。 問題の概要 問題文:任意の文字列が与えられたとき、その文字列に含まれる母音の数をセットを使って数えます。 基本的なアプローチとしては、文字列全体を先頭から順に走査し、各文字が母音であるかどうかを判定します。母音であればカウントを1ずつ増やしていき、最終的な合計を出力します。 実装例 def vowel_count(str_): count = 0 # 母音をセットとして定義 vowe