- ベストアンサー
複数桁10進数の*桁目だけを抽出したい
タイトルがすべてと言えてしまうのですが、 例えば、int宣言された"4287"(この値は変動します)という数値があったとして、1桁目の"7"だけを別の変数へ引き抜きたいのですが、その場合にはANDによるマスク処理による演算で処理可能なのでしょうか? また、他に良い方法などありましたら教えていただけますでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
★10進数ですので AND は使えませんね。 ・簡単なサンプルを載せますので読み取って下さい。 サンプル1: int value = 4287; int a[ 4 ]; a[0] = (value % 10); value /= 10; // 1桁目を取り出す a[1] = (value % 10); value /= 10; // 2桁目を取り出す a[2] = (value % 10); value /= 10; // 3桁目を取り出す a[3] = (value % 10); value /= 10; // 4桁目を取り出す サンプル2: int value = 4287; int a; a = (value % 10); value -= a; value → 4280 a → 7 になります。
その他の回答 (2)
- yaemon_2006
- ベストアンサー率22% (50/220)
#include <stdio.h> #include <string.h> int PicUp(int n, int d) { char str[16]; sprintf(str, "%d", n); return str[strlen(str) - d] - '0'; } int main(void) { int n, d; scanf("%d %d", &n, &d); printf("%d", PicUp(n, d)); return 0; }
お礼
手本を書いていただいてありがとうございます。
- kikanbo
- ベストアンサー率31% (44/139)
(10をほしい桁数乗した数で割って、int型にしたものに10をかけた数)を10を(ほしい桁数-1)乗した数で割って、int型にしたものから引くといいです。 たぶんこんな感じ
お礼
言っていることは、ANo.2さんとほぼ同じと理解してよいのでしょうか?
お礼
丁度、複数行にわたって引き抜きたかったので、サンプル1は大変助かりました。 まだ意味を理解していませんが、繰り返し使っていけば理解できると信じつつ、利用させていただきます!