C言語のきほん「文字列の基本(1)」

スポンサーリンク
プログラミング C言語

今回は、「文字列内のすべての数字文字を除去する」プログラムである。

なお、本プログラムは、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クリエイティブ

新・解きながら学ぶC言語 第2版
Amazonで購入できます↑(クリック)

コメント

タイトルとURLをコピーしました