- ベストアンサー
C言語で整数値の分割取得方法
- C言語で整数値を3つに分割して取得する方法を教えてください。
- VC2008を使用している初心者です。
- 調査したが、関数が見つからなかったため、コードの例も教えてほしいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
int a=235465667; int b,c,d; b = a / 1000000; c = (a / 1000) % 1000; d = a % 1000; でいいの?
その他の回答 (3)
- trapezium
- ベストアンサー率62% (276/442)
あえていうなら sscanf() で出来無くはないですが、取り扱いが難しいので薦めはしません。 当然の注意点として、入力バッファの内容により変換に失敗することがあるので、scanf() の戻り値のチェックは欠かせません。 #include <stdio.h> main() { char buf[100]; int a[5], i, n; fgets(buf, sizeof(buf), stdin); n = sscanf(buf, "%3d%3d%3d", a, a+1, a+2); printf("%d: ", n); for (i = 0; i < n; i++) printf("%d, ", a[i]); }
お礼
少し分からないところがありますが、おおまかには理解できました! こんな仕方もあるんですね・・やはり自分はまだまだ未熟です。 ありがとうございました!
- Tacosan
- ベストアンサー率23% (3656/15482)
「3つにわける」とはどのような操作なのでしょうか? この 1例だけを見てあなたが思い描いている操作が分かる人はいないと思います. たとえば, 1029 が与えられたときにどうすればいいのか明確ではありません. ということで, 数式などを使ってあなたが希望する操作をきちんと書いてください. もっとも, そんな不思議な機能を必要とする人が多いとは思えないので, 何らかの形で作らなければならないでしょうね.
お礼
質問の仕方が不十分でした。ごめんなさい。 他の方の回答を見ると理解できましたので、以後気をつけます。 本来は9桁の数字を前から順番に3桁ずつに分解するという動作を望んでいました。 ご指摘ありがとうございました。これから注意していきたいです。
- black2005
- ベストアンサー率32% (1968/6046)
そんな都合の良い標準関数は存在しませぬ。 自力で作るしかありません。 そもそも、内容的に開発言語以前の問題。 ヒント(数値桁が固定だとして) ・235465667/10^6の整数同士の割り算の結果はいくら? ・その答えを10^6倍して元の数字から引くと、どんな数字が残る? ちなみに235465667という数字はint型では桁溢れする
お礼
ごめんなさい。 教えて頂いたのを頭の中で整理すると簡単にできました。 発想がまったく追いつかずに迷惑をかけて申し訳ありませんでした・・。 分かりやすく教えてくださってありがとうございました! あと、教えてもらってる分際で申し上げるのは恐縮なのですが、235465667は問題なく表示することができましたので、桁溢れはもう少し大きいのではないかと思います。 間違っていたらごめんなさい。
お礼
ありがとうございました! 教えて頂いたとおりにやると問題なく分けることができました。 教えて頂いたのを考えてみると単純なことで・・すいませんでした。