C言語で分からないところがあります。整数値の分割取得みたいなこと・・
で困っています。
僕はC言語初心者です。
コンパイラはVC2008です。
今回整数値を分割して取得したいと考えています。
例えば次のような整数値(int型)があったとします。
235465667
この整数値を3つにわけて取得したいのです。つまり
235
465
667
としたいのです。このような働きをしてくれる便利な関数はないのでしょうか?
調べてみたのですが、内容が内容だけに探しにくくて見つけられませんでした。
もし、関数がなければ、どのようにすれば取得できるかコードを教えてほしいです。
よろしくお願いします!
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]);
}
少し分からないところがありますが、おおまかには理解できました!
こんな仕方もあるんですね・・やはり自分はまだまだ未熟です。
ありがとうございました!
No.3
- 回答日時:
「3つにわける」とはどのような操作なのでしょうか?
この 1例だけを見てあなたが思い描いている操作が分かる人はいないと思います. たとえば, 1029 が与えられたときにどうすればいいのか明確ではありません. ということで, 数式などを使ってあなたが希望する操作をきちんと書いてください.
もっとも, そんな不思議な機能を必要とする人が多いとは思えないので, 何らかの形で作らなければならないでしょうね.
質問の仕方が不十分でした。ごめんなさい。
他の方の回答を見ると理解できましたので、以後気をつけます。
本来は9桁の数字を前から順番に3桁ずつに分解するという動作を望んでいました。
ご指摘ありがとうございました。これから注意していきたいです。
No.2
- 回答日時:
そんな都合の良い標準関数は存在しませぬ。
自力で作るしかありません。
そもそも、内容的に開発言語以前の問題。
ヒント(数値桁が固定だとして)
・235465667/10^6の整数同士の割り算の結果はいくら?
・その答えを10^6倍して元の数字から引くと、どんな数字が残る?
ちなみに235465667という数字はint型では桁溢れする
ごめんなさい。
教えて頂いたのを頭の中で整理すると簡単にできました。
発想がまったく追いつかずに迷惑をかけて申し訳ありませんでした・・。
分かりやすく教えてくださってありがとうございました!
あと、教えてもらってる分際で申し上げるのは恐縮なのですが、235465667は問題なく表示することができましたので、桁溢れはもう少し大きいのではないかと思います。
間違っていたらごめんなさい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- 統計学 Rを用いた「繰り返しがある直交表実験計画法」の分析方法 8 2023/08/01 17:58
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- JavaScript useStateの分割代入について 1 2022/05/06 10:02
- 確定申告 水商売の確定申告(年末調整、源泉徴収票)について。 現在水商売をしております。 確定申告は数年前から 3 2023/01/20 17:40
- 数学 整数問題について 3 2023/07/10 15:41
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
複数桁10進数の*桁目だけを抽出したい
C言語・C++・C#
-
int型(2バイト)データの分割
C言語・C++・C#
-
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
-
4
数字列を3桁ごとにカンマで区切る方法
C言語・C++・C#
-
5
*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください
C言語・C++・C#
-
6
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
7
数字の位ごとの値を表示するプログラム
C言語・C++・C#
-
8
sscanfとscanfの違いがよくわからないのですが、簡単に優しく教えて下さい。 お願い致します。
C言語・C++・C#
-
9
fgets( ) の返り値は何?
C言語・C++・C#
-
10
C言語での文字列より値を抜き出す
C言語・C++・C#
-
11
charでの計算?
C言語・C++・C#
-
12
構造体のメンバをfor文で回したい
C言語・C++・C#
-
13
正数分割の個数
その他(プログラミング・Web制作)
-
14
C言語初心者の質問失礼します。
C言語・C++・C#
-
15
文字列の途中から途中までを抽出
C言語・C++・C#
-
16
scanfに文字が入力されたときにエラー表示させる
C言語・C++・C#
-
17
0xffffとは?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
if と配列の組み合わせ
-
複数桁10進数の*桁目だけを抽出...
-
「指定されたキャストは有効で...
-
(int *)の意味
-
足して100になるような乱数のア...
-
PowerShellがうまくいかない
-
C言語 エラーの原因がわからな...
-
C言語で行列の積を計算できるよ...
-
C#で配列の分割
-
ポインタを使って関数の値の...
-
C言語 逆順の配列の仕方を教え...
-
因数分解を行うプログラムについて
-
各桁の和を返す関数
-
引数 戻り値 return文について
-
C言語で三目並べをするプログラ...
-
円周率
-
C言語の問題です。大至急回答お...
-
わかりません・・・。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報