C言語で文字列から数字を抽出する方法は何ですか?
文字列から数字を抽出するには、C言語のライブラリ関数とループ文を使用する方法があります。これは一つの可能性です:
- 文字列の各文字を走査し、数字文字かどうかを判断します。
- もし現在の文字が数字の場合は、新しい文字列に追加してください。
- もし現在の文字が数字でない場合、新しい文字列が空でないかどうかを判定し、空でない場合はその新しい文字列を数字に変換して記録し、そして新しい文字列を空にします。
- 最後の文字の処理は、3番目のステップと同様ですが、最後の文字が数字である可能性があるため、特に注意する必要があります。
こちらはサンプルコードです。
#include <stdio.h>
#include <ctype.h>
int main() {
char str[] = "abc123def456";
char numStr[100]; // 用于存储提取到的数字字符串
int num; // 存储提取到的数字
int i, j = 0;
for (i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) {
numStr[j++] = str[i];
} else {
if (j > 0) {
numStr[j] = '\0'; // 添加字符串结束符
num = atoi(numStr); // 将字符串转换为整数
printf("%d\n", num); // 输出提取到的数字
j = 0; // 清空数字字符串
}
}
}
// 处理最后一个数字
if (j > 0) {
numStr[j] = '\0';
num = atoi(numStr);
printf("%d\n", num);
}
return 0;
}
上記のコードは文字列から数字を抽出し、その結果を出力します。出力結果は:
123
456
注意:このコードは、文字列内の数字が整数であることを前提としています。つまり、文字列に小数が含まれている場合は、atof関数など別の関数を使用する必要があります。また、このコードは抽出された数字が整数の表現範囲を超えないことを前提としています。もしその範囲を超える場合は、別の方法を使う必要があります。