C言語で整数値の分割取得方法

このQ&Aのポイント
  • C言語で整数値を3つに分割して取得する方法を教えてください。
  • VC2008を使用している初心者です。
  • 調査したが、関数が見つからなかったため、コードの例も教えてほしいです。
回答を見る
  • ベストアンサー

C言語で分からないところがあります。整数値の分割取得みたいなこと・・

C言語で分からないところがあります。整数値の分割取得みたいなこと・・ で困っています。 僕はC言語初心者です。 コンパイラはVC2008です。 今回整数値を分割して取得したいと考えています。 例えば次のような整数値(int型)があったとします。 235465667 この整数値を3つにわけて取得したいのです。つまり 235 465 667 としたいのです。このような働きをしてくれる便利な関数はないのでしょうか? 調べてみたのですが、内容が内容だけに探しにくくて見つけられませんでした。 もし、関数がなければ、どのようにすれば取得できるかコードを教えてほしいです。 よろしくお願いします!

  • jaron
  • お礼率80% (28/35)

質問者が選んだベストアンサー

  • ベストアンサー
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

int a=235465667; int b,c,d; b = a / 1000000; c = (a / 1000) % 1000; d = a % 1000; でいいの?

jaron
質問者

お礼

ありがとうございました! 教えて頂いたとおりにやると問題なく分けることができました。 教えて頂いたのを考えてみると単純なことで・・すいませんでした。

その他の回答 (3)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.4

あえていうなら 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]); }

jaron
質問者

お礼

少し分からないところがありますが、おおまかには理解できました! こんな仕方もあるんですね・・やはり自分はまだまだ未熟です。 ありがとうございました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「3つにわける」とはどのような操作なのでしょうか? この 1例だけを見てあなたが思い描いている操作が分かる人はいないと思います. たとえば, 1029 が与えられたときにどうすればいいのか明確ではありません. ということで, 数式などを使ってあなたが希望する操作をきちんと書いてください. もっとも, そんな不思議な機能を必要とする人が多いとは思えないので, 何らかの形で作らなければならないでしょうね.

jaron
質問者

お礼

質問の仕方が不十分でした。ごめんなさい。 他の方の回答を見ると理解できましたので、以後気をつけます。 本来は9桁の数字を前から順番に3桁ずつに分解するという動作を望んでいました。 ご指摘ありがとうございました。これから注意していきたいです。

  • black2005
  • ベストアンサー率32% (1968/6046)
回答No.2

そんな都合の良い標準関数は存在しませぬ。 自力で作るしかありません。 そもそも、内容的に開発言語以前の問題。 ヒント(数値桁が固定だとして) ・235465667/10^6の整数同士の割り算の結果はいくら? ・その答えを10^6倍して元の数字から引くと、どんな数字が残る? ちなみに235465667という数字はint型では桁溢れする

jaron
質問者

お礼

ごめんなさい。 教えて頂いたのを頭の中で整理すると簡単にできました。 発想がまったく追いつかずに迷惑をかけて申し訳ありませんでした・・。 分かりやすく教えてくださってありがとうございました! あと、教えてもらってる分際で申し上げるのは恐縮なのですが、235465667は問題なく表示することができましたので、桁溢れはもう少し大きいのではないかと思います。 間違っていたらごめんなさい。

関連するQ&A

  • C言語やC++、VC++について

    C言語やC++、VC++について C言語やC++、VC++などはIL コードと呼ばれる中間言語が作成されるのでしょうか?それともコンパイラーがネイティブコードに変換されるのでしょうか?でもネイティブコードに変換すると機械語なので互換性がないのではないのでしょうか?それなのになぜ他のwindowsのパソコンで実行できるのはなぜなのでしょうか?そこら辺はどうなっているのでしょうか?

  • C言語についてどうしてもわからない疑問

    プログラミング初心者です。 C言語を勉強中に疑問に思ったことが2つあります。 まず1つ目。 C言語以外のプログラミング言語、例えばjavaとかC#とかjsとかpythonとかrubyとかPHPとか、には開発者にとって便利なライブラリとかフレームワーク(僕にはこの2つの明確な違いがわかりません。が、どちらも「開発者が定義しなくてもよい関数やオブジェクトの集合」という認識があります)がありますよね。 そのおかげで色んな人達がプログラミングし易くなりました。 ネット(はてぶのホットエントリとか)でも「馬鹿な俺がプログラミングを勉強して〇〇を作った」といった記事をよく目にします。 でも「C言語を使って」というのは聞いたことがありません。 そもそも、C言語はそいういったライブラリやフレームワークが少ないように感じます。 検索してもrailsとかjqueryのようなフレームワーク(ライブラリ?)は見つかりません。 これが無かったらプログラムなんて作れないのでは? しかし、世間にはC言語で作られたプログラムが多いのもまた事実。 C言語ではいったいどのように開発が行われているのか教えてください。 2つ目 unixとかlinuxといったOSはC言語で書かれている聞いたことがあります。 しかし、プログラムの開発は「コードを書く→コンパイル(→デバッグ)→実行」という流れですよね。 ではOSを開発するときに、そのコードをどうやってコンパイルするのでしょうか? コンパイラはOSの上に立っているとするなら、OSがない状態でコンパイラはどこに立てばいいのか。 そこがわかりません。 誰かこの2つの疑問に答えてください。 お願いします。

  • c言語の変数一覧の取得

    c言語で書かれたコードについて、使われている変数名や関数名の一覧を取得することはできるのでしょうか? 何か方法がありましたら教えてください。

  • C言語 関数

    int型整数値の四乗値を返す関数int power4(int x)を作りたいのですが… int i; puts("整数を入力してください:") for (i = 0; i < 10; i++) {         printf("%d\n",i*i*i*i); } このようにすれば多分四乗になるとおもうのですが、 この場合、範囲がi<10のように指定されてしまいます。 どのようにすれば範囲に関係なく四乗の値が求められるのでしょうか? C言語初心者で、まだ基本的なものしか勉強していないのですが、 どなたかアドバイスよろしくお願いします。 (作り方は二通りあって、factorialを使う方法と上のように単純に4回かける方法があるようです)

  • C言語のことで…

    C言語のポインタの勉強をしているのですが、 9×9の整数型2次元配列を格納する関数kuku_makeを作成。 結果確認はmainで上記関数を呼び出して結果を表示。 void kuku_make(int kuku[][9]) 方向性だけでもいいので教えてください。

  • C言語初心者です。

    C言語初心者です。 Macを使用しています。 概要を理解したいので教えてください。 コードをかく   ↓ 実行する   ↓ 結果が表示される というようなイメージなのですが違うでしょうか? gcc コンパイラ ターミナル X-code などが必要だというのはわかります。 しかしそれらをどのように、つかうかわかりません。 どなた様か初心者にもわかるように簡単に一から教えてください。 よろしくお願いいたします。

  • C言語について。

    C言語プログラマとしては、スタートアップコードは・・・ ・自分が書いたプログラムを、直接動かすために必要なライブラリ ・それはコンパイル後、リンカによって追加されるライブラリこれは、 どういう意味でしょうか?分かりやすく教えていただけると幸いです。すみません。で、 以下のかぶくんまんさんの回答です。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11247611941 で、 C言語におけるプログラミングとは「main関数を書くこと」に他ならない。なぜ「main関数を書く」ことがC言語におけるプログラミングに他ならないのかと言えば、それは偏に「C言語のコンパイラはmain関数を呼び出すプログラムを生成するから」です。それがmain関数を求めるので結果的にmain関数がリンクされ、そしてmain関数が求めるままに他の関数もリンクされていくわけです。 で、その「main関数を呼び出すプログラム」こそが、C言語における「スタートアップコード」。 という回答で、main関数以降は、プログラマが書くのですよね?プログラマが関数をリンクさせる様なプログラムを書くということでしょうか?教えていただけると幸いです。すみません。 という所が分かりません。教えていただけると幸いです。すみません。以下のURL https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12247932542

  • C言語 関数の問題

    C言語(関数の問題)で読み込んだ4つの整数の最大値を求めプログラムで 整数を2つペア比較し、関数の入れ子を用いて最大値を見つけて、表示する。 というプログラムを作成したいのですが #include<stdio.h> int maxof(int a, int b) { if(a > b) return (a); else return (b); } int max4(int a, int b, int c, int d) { max(max(a, b), max(c, d)); } int main(void) { int num1,num2, num3, num4; ------ 整数の読み込み printf("最大値は%dです。", max4(num1, num2, num3, num4)); return(0); } と記述すると、上手くいったのですが これを max関数だけを用いて作成できますでしょうか? 整数の比較は全てmax関数で行いたいです。

  • C言語で整数を文字列へ型変換

    C言語で整数を文字列へ型変換 int result[11]; const char *tmp; resultの中の11個の数字を 1,2,3,4,5,6,7,8,9,10,11 のような文字列にして、tmpへ代入したんですが、やり方が分かりません。 Cの初心者ですので、教えていただきたいです。

  • c言語について

    C言語で、二つの整数値を読み込んで、前者の値が後者の何%であるかを実数で表示するプログラムを作成しようとして以下のコードを書きました。 #include <stdio.h> int main(void) { int n1, n2 ; puts("二つの整数を入力してください。") ; printf("整数A : \n") ; scanf("%d" , &n1) ; printf("整数B : \n") ; scanf("%d" , &n2) ; printf("Aの値はBの%f%%です。\n" , (double)(n1 / n2) * 100) ; return 0 ; } 上記コードを実行すると、0.000000%のような結果になります。 そこで、最後のキャスト演算子を使用した後の式で(n1 / n2) * 100がまずいのかなと考え、n1 / n2 * 100にしたら上手くいきました。 なぜ、上記コードだと上手くいかないんでしょうか?

専門家に質問してみよう