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」に設定します。