C言語で文字列中の数字をフィルタリングする方法

文字列に含まれる数値をフィルタリングするには、文字がアルファベットかどうかを判定す るC言語の文字処理関数 isalpha() を利用できます。以下にサンプルコードを記載します。

#include <stdio.h>
#include <ctype.h>

void filterDigits(char *str) {
    int i = 0, j = 0;
    while (str[i]) {
        if (!isdigit(str[i])) {
            str[j] = str[i];
            j++;
        }
        i++;
    }
    str[j] = '\0';
}

int main() {
    char str[] = "abc123def456";
    
    printf("Original string: %s\n", str);
    filterDigits(str);
    printf("Filtered string: %s\n", str);
    
    return 0;
}

実行結果:

Original string: abc123def456
Filtered string: abcdef

上のコードでは、filterDigits()関数を定義しています。この関数は文字列を引数として受け取り、文字列内の数字をフィルタリングします。この関数では、文字列を反復処理して、isdigit()関数を使用して現在の文字が数字かどうかを判定します。数字でない場合、その文字を元の文字列の指定された位置に保存し、文字を反復処理および保存する2つのポインタiとjを同時に維持します。最後に、文字列が正しく終了するように、位置jの文字を文字列終了記号「\0」に設定します。

bannerAds