今回は、「文字列内のすべての数字文字を除去する」プログラムである。
なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.88.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 でコンパイルしている。
文字列中の数字文字を除去するプログラム
//文字列中の数字文字を除去するプログラム
#include <stdio.h>
//文字列s中の数字文字を除去する
void del_digit(char s[])
{
int i = 0,idx = 0;
while (s[i])
{
if (s[i] < '0' || s[i] > '9')
s[idx++] = s[i];
i++;
}
s[idx] = '\0';
}
int main(void)
{
char str[256];
printf("文字列を入力してください:");
scanf("%s",str);
del_digit(str);
puts("数字文字を除去しました。");
printf("str=%s\n",str);
return 0;
}
実行結果
文字列を入力してください:AB1C8
数字文字を除去しました。
str=ABC
数字文字を除去
関数del_digitでは、変数iとidxの二つを使って配列sを走査している。
変数i 文字列s内の全文字を先頭から末尾へと操作する際の着目文字の添字
変数idx 非数字文字の格納先の添字
変数iは、while文の繰り返しのたびにインクリメントする。その過程で、着目文字s[i]が数字文字でなければ、その文字をs[idx]に代入するとともにidxをインクリメントする。
(参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)SBクリエイティブ
コメント