C言語で文字列中の数値を取得する方法
C言語では、isdigit関数とatoi関数を使って文字列から数値を取り出すことができます。
isdigit 関数は、文字が数値文字かどうかを判定するために使用され、その原型は次の通りです。
#include <ctype.h>
int isdigit(int c);
数値文字であれば0以外の値(真)を返し、数値文字でなければ0(偽)を返します。
文字列を整数に変換するatoi関数は、次のようなプロトタイプをもちます。
#include <stdlib.h>
int atoi(const char *str);
この関数は、文字列のパラメーター str を整数(型は int)に変換して、その整数を返します。
文字列から数字を抽出して使う例
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[100] = "abc123def456";
int len = strlen(str);
char numStr[100] = "";
int num = 0;
int i, j = 0;
for (i = 0; i < len; i++) {
if (isdigit(str[i])) {
numStr[j++] = str[i];
}
}
num = atoi(numStr);
printf("提取到的数字为:%d\n", num);
return 0;
}
コード内の文字列「abc123def456」から数字の123が取り出され、整数123に変換されて出力されます。
なおこの方法は連続した数字のみ抽出できますので、文字列内に複数の数字の並びがある場合、または数字の並びの間に他の文字がある場合には、適宜修正が必要になります。