ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:hx6d6b スペースで区切った3つの数値の大小を比較する
困り度:
  • すぐに回答を!
C初心者です。

たとえば「32 49 67」と入力させて、
その大小を比較するプログラムを書きたいんですが、
どうやって数値をひろっていいのか分かりません;;

int型でたとえばiocharという変数を宣言して
while( (iochar = getchar()) != EOF)とか書いてみても
putchar(iochar)で表示することはできても
32、49、67を独立した数値として扱ってはくれないですよね……?

さらに表示したあとプログラムが終了しないので
exit()を使ってみたんですけど変化なくて;
while(){}の中に入れちゃうとputchar(iochar)が最初の1文字を
表示しただけで終了しちゃうし……。

初歩の初歩で申し訳ないんですけど、何かいい解決策があれば
教えてもらえると助かりますorz
質問投稿日時:08/03/20 05:41
質問番号:3878271
最新から表示回答順に表示

回答

 

回答者:nyororo-n こんなやり方もあります。

#include<stdio.h>
#include<string.h> //strtok()用
#include<stdlib.h> //atoi()用
void main(void)
{
char str[] = "32 49 67";
char *tp;
int num[3];
int count;
tp = strtok( str, " " ); //文字列を区切る関数
count = 0;
while (tp != NULL && count < sizeof(num) / sizeof(num[0]))
{
num[count++] = atoi(tp); //文字列を数値にかえる関数
tp = strtok( NULL," ");
}
printf("%d,%d,%d",num[0],num[1],num[2]);
}
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/21 23:35
回答番号:No.4
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:yama5140 >C初心者です。

 No1, 2 さんの方法のほうが「勉強」のためには良いかと思いますが・・。
 (いろんな方法を試して下さい)

★コマンドラインから入力する方法も、あります。

 実行例: Z:\>test.exe 32 49 67

 test.c の main() 関数部分

 int main( int argc, char *argv[] )

 argv[0] に test.exe という文字列が入ります。
 argv[1] に 32 という文字列が入ります。
 argv[2] に 49   〃
 argv[3] に 67   〃

★整数文字列は、atoi() 関数で数値に変換できます。

>何かいい解決策があれば、

☆「いい」かどうかは別として、標準仕様です。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/21 09:31
回答番号:No.3
参考URL: http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide67-1.html
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:asuncion fgets()を使って、いったん"32 49 67"という文字列として
受け取ります。
その後、sscanf()を使って、3つの数値に変換します。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/20 06:47
回答番号:No.2
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:tomoyochan 3桁以内の数値を3つ入力すると仮定します。

int i
char mojiretu[32]
char suji[3][3]

// キーボードからの入力をmojiretuに取りあえず格納する
while( (iochar = getchar()) != '\n' ){
mojiretu [i++] = putchar(iochar)
}

次に、mojiretuをスペースが検出される毎に

suji[0]
suji[1]
suji[2]

に切り出す
(¥0の処理を忘れずに)

あとは、3つのsuji配列を atoi で数値化しては如何でしょうか?
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/20 06:24
回答番号:No.1
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示