- ベストアンサー
2000年という文字列から2000を取り出す
データベースから取得したデータに年が文字で入っています。 "2000年"という文字から2000の部分だけを取り出すには どうすればいいでしょうか? ・年の数字部分は4桁以外もありえる ・数字部分は半角 ・取り出した数字は数値に変換したい 初心者に難しそうな部分は簡単なコメントをつけていただければ 大変助かります。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
atoi関数を使います。 数値変換できるところまで変換されます。 int n = atoi("2000年"); でn=2000になります。 #include <stdlib.h> をお忘れなく。
その他の回答 (1)
- JaritenCat
- ベストアンサー率37% (122/322)
No.1のatoiで問題ないです。 あとは、sscanfを使うとか、自前の変換関数を作るとか。。。参考まで。 #include <stdio.h> /* printf sscanf */ #include <stdlib.h> /* atoi */ #include <ctype.h> /* isspace isdigit */ int main(void) { char nen[]=" 2000年"; int n; char *p; sscanf(nen,"%d",&n); printf("%d\n",n); n=atoi(nen); printf("%d\n",n); p=nen; n=0; while(isspace(*p)) p++; /* 先頭の空白文字をキャンセル */ while(isdigit(*p)) {n=n*10+*p-'0';p++;} printf("%d\n",n); return 0; }
お礼
ありがとうございます! 自前の関数を作るしかないと思っていました。 もし自分で作る場合はこういう方法があるのですね。 参考にさせていただきます!
お礼
ありがとうございます! atoiがそんなに素敵な関数だったとは知りませんでした。 早速やってみます。