教えて!gooにおける不適切な投稿への対応について

タイトルがすべてと言えてしまうのですが、
例えば、int宣言された"4287"(この値は変動します)という数値があったとして、1桁目の"7"だけを別の変数へ引き抜きたいのですが、その場合にはANDによるマスク処理による演算で処理可能なのでしょうか?
また、他に良い方法などありましたら教えていただけますでしょうか?

gooドクター

A 回答 (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
になります。
    • good
    • 11
この回答へのお礼

丁度、複数行にわたって引き抜きたかったので、サンプル1は大変助かりました。
まだ意味を理解していませんが、繰り返し使っていけば理解できると信じつつ、利用させていただきます!

お礼日時:2007/02/13 11:54

 


#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;
}
 
    • good
    • 1
この回答へのお礼

手本を書いていただいてありがとうございます。

お礼日時:2007/02/13 11:52

(10をほしい桁数乗した数で割って、int型にしたものに10をかけた数)を10を(ほしい桁数-1)乗した数で割って、int型にしたものから引くといいです。



たぶんこんな感じ
    • good
    • 1
この回答へのお礼

言っていることは、ANo.2さんとほぼ同じと理解してよいのでしょうか?

お礼日時:2007/02/13 11:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング