• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:猫でもわかるC言語の本で勉強された方教えてー;_;)

猫でもわかるC言語の本で勉強された方教えてー

このQ&Aのポイント
  • 猫でもわかるC言語を勉強しています。Microsoft Visual C++2008 Express Edition のバージョンのコンパイラで第5章のscanf関数のところで困っています。
  • scanf関数を使って整数値を入力し、その値を表示するプログラムを書いていますが、ビルドすると警告が出ます。また、別のバージョンのコンパイラを使えば警告は出ないのですが、プログラムを実行すると期待した結果が得られません。
  • どうすれば正しくscanf関数を使うことができるのか、アドバイスをお願いします。コンパイラの設定に問題があるのでしょうか?

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.6

これより前のサンプルでは、実行したら最後まで進むものだったのでは? このプログラムは、実行したら全部一気に表示されるものではないんです。 このプログラムは、途中でユーザーからの入力を待ちます。 繰り返しになりますけど。 > printf("整数値を入力してください----125"); で"整数値を入力してください----125"と表示されて > scanf_s("%d",&seisu); で入力待ちで止まっているのが今の状態です。 入力があるまで、いつまでもいつまでもここで止まっています ここで、「数値を入力してEnter」と入力があると、 そこではじめてscanf_sを抜けて、次の > printf("あなたの入力した数値は%dですね",seisu); へ進みます。 #1 > 整数値(例えば125)を入力したらどうなる? #5 > 「125」をちゃんと自分で入力して、Enterキーを押してますか? とすでに指摘があるのですが、それはやったのですか? 勝手に数値が入ったりしません。 あと、「猫でもわかるC言語 scan01.c」で検索したら、次のサイトが見付かりました。 http://www.mogumagu.com/bamboo_lath_by_mogumagu/2010/03/c1.html あなたのプログラムと違うのですが、こちらの方がサンプル通りに動作するように思います。 本のプログラムはどちらなのでしょう?

tyannbara
質問者

お礼

あ!そうなのですか!!全部結果が表示されるものではなくって 途中(コマンド プロンプト)で数値を入力してEnterを押すのですね!!! やってみたところ、出来ました\(^△^)本ッ当に!先生ありがとうございましたm(__)m(陳謝) すごく困ってました^^;こんな解釈が悪いやつに教えれるなんてみんな先生レベルだよ~ww これで進めます、URLも参考(家宝)にして頑張りますありがとうございました(#^.^#)/。

その他の回答 (5)

回答No.5

「125」をちゃんと自分で入力して、Enterキーを押してますか? あんま関係ないですが、勉強ならscanfはscanfのままで学習した方が良いと思います。 _CRT_SECURE_NO_DEPRECATEを定義しとけば、とりあえず警告は表示されなくなると思います。 というのも、scanfの引数をそのままにしてscanf_sにすると動作が変わる状況があるからです。

tyannbara
質問者

お礼

ちゃんと125を入力してEnterキー押したんですけどダメでした 本の通りに  整数値を入力してください----125          あなたの入力した数値は125ですね が出力されない~とくにコレ↑ >scanfの引数をそのままにしてscanf_sにすると動作が変わる状況があるからです。 動作が変わるのですか!?。覚えておきます。

  • TT414
  • ベストアンサー率18% (72/384)
回答No.4

>猫でもわかるC言語の本で勉強された方教えてー;_; 「猫でもわかるC言語」はゴミ本です、今すぐ捨てて書いてあったことは全て忘れ別の本で勉強しなおしましょう。 本を選ぶときは、以下のような記述をしている本は絶対に避けてください。 (1)if(式)文;else文; (2)do 文;while(式); (3)do 文;while(式) (4)「goto文はラベルへ飛ぶ」と書き、ラベルの定義を「ラベル名:」とする (5)exit文、書式は「exit 式;」、使うにはstdlib.hが必要 (6)a<b<cがコンパイルエラーになる (7)double intと宣言 (8)scanf文、printf文などの記述 (9)熟練者は「*p++=toupper(*p);」と書くと記述 (10)do 文 文 文 while(式);などと「do」と「while」の間に複数の文を書ける (11)do{文}while(式);などと「{}」が必要 (12)(10)と(11)を同一人物が別の本で書く (13)a<bの結果が0、1以外の値が返る (14)文字列の最後は文末コード (15)if(!expr)goto label; ... /* 処理 */ label; (16)「~」文字がC言語では未使用 (17)「^=」演算子は右辺を反転したものを左辺に代入する (18)for(文 式;式)文 (19)','で区切られた式は右から評価する (20)#define文、#include文などの記述 (21)printfにはdouble専用の書式は無いと記述 (A)printf("%lf",double型の式); (B)floatの出力には%f、doubleの出力には%lf、と書きながら浮動小数の出力は%e、%gだと書いてある。 (a)0<n<16という式を使う (b)int func(int n){int d;d=1/n;return d;}というサンプルを作る (c)関数形式マクロの説明で「パラメータに括弧をつける」と「全体に括弧をつける」の片方だけの記述 (1)~(21)は文法の基本を知らないバカが書く記述です。 (A)~(B)関数への引数渡しの基本を知らない人間の記述です。 (a)~(c)は単なるどじでしょう。

tyannbara
質問者

お礼

!?,あ。ありがとうございましたご丁寧にm(_ _)mビタンッ

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

その本は持ってないのですが >整数値を入力してください---- が出力されたところで >125 を入力すると >あなたの入力した数値は125ですね と出力される。 違う数値を入力すると125ではなくその入力した数値が出力される。 というのが、そのプログラムの期待される動作じゃないですか? 数値を入力する方法を学ぶのが目的で printf("整数値を入力してください----125"); じゃなくて printf("整数値を入力してください----"); で。

tyannbara
質問者

お礼

いや、整数値を入力してください----125は出力(表示)されるのに あなたの入力した数値は125ですね←が表示されないのです本の通りに・・ ごめんなチャイまだ色々知識が(用語とか)半端で解釈や説明うまくできなくて。 (やっぱ独学じゃむりがあるかな~^-^;)

  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.2

確認してないけどストリームバッファで止まってるからだと思う。 × printf("あなたの入力した数値は%dですね",seisu); ○ printf("あなたの入力した数値は%dですね\n",seisu); で出んじゃないかな。

tyannbara
質問者

お礼

ストリームバッファ・・・? こ、コホン・・ ○ printf("あなたの入力した数値は%dですね\n",seisu); で出力しましたがダメでした;それと僕の質問文章に表記もれがありました すみません<(_ _)> printf("あなたの入力した数値は%dですね",seisu);とは書いてなくってちゃんとテキスト通りにprintf("あなたの入力した数値は%dですね\n",seisu);と書いて、ビルド→デバッグなしで開始、と本通りにやっているんですけど表示されないのですよ↓も~。

  • f272
  • ベストアンサー率46% (8626/18446)
回答No.1

> と書いてビルドをしても警告1になります、あと 警告だから気にしないことです。 > 整数値を入力してください----125 > だけが出力されます(コマンド プロンプトに)・・・ 整数値(例えば125)を入力したらどうなる? 入力するまでは,出力されるものはそれだけであるのが正しい動作です。 > これ以降いっぱいscanfのこといっぱい出るのにぃ~~ scanfのことなど忘れてしまうのが一番です。このような例題でしか使わないような関数ですし...

tyannbara
質問者

お礼

え!?、 整数値を入力してください----125 ←のだけの出力(表示)だけで 正解なのですか!?本には  整数値を入力してください----125  ←らが                    あなたの入力した数値は125ですね コマンド プロンプトに表示されると書いてあったんですけど本の方が間違え? すみません知識が半端なもので・・; あと、警告だからって気にしなくてもOKなのですか?。あと後支障とかきたさない?(う~んこのまま続けて見ようかな・・?お勉強・・)。

関連するQ&A