猫でもわかるC言語を勉強しています
Microsoft Visual C++2008 Express Edition のバージョンのコンパイラで
第5章のscanf関数のところで困っていることになっていますsos
本の通りに
/*scan01.c*/
#include <stdio.h>
int main()
{
int seisu;
printf("整数値を入力してください----125");
scanf("%d",&seisu);
printf("あなたの入力した数値は%dですね",seisu);
return 0;
}
と書いてビルドをしても警告1になります、あと
/*scan01.c*/
#include <stdio.h>
#define _CRT_SECURE_NO_DEPRECATE
int main()
{
int seisu;
printf("整数値を入力してください----125");
scanf_s("%d",&seisu);
printf("あなたの入力した数値は%dですね",seisu);
return 0;
}
と書いてもエラーや警告は0になるけどデバッグ→デバッグなしで開始でいつもどうりに画面に(コマンド プロンプト?っぽいやつに)出力をすると本の通りに
整数値を入力してください----125
あなたの入力した数値は125ですね
とならず
整数値を入力してください----125
だけが出力されます(コマンド プロンプトに)・・・
みなさんはどうやって突破したの!?いや、されたのッ!!!それともいらってはいないんですけどコンパイラの設定が悪いんでしょうか?;_;
何をどこをヘルプしたらいいやら分かりません教えてください先輩僕は一体どうしたらいいの!!!!
これ以降いっぱいscanfのこといっぱい出るのにぃ~~OTL←やっぱ僕これになるんでしょうかね・・。
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/ …
あなたのプログラムと違うのですが、こちらの方がサンプル通りに動作するように思います。
本のプログラムはどちらなのでしょう?
あ!そうなのですか!!全部結果が表示されるものではなくって
途中(コマンド プロンプト)で数値を入力してEnterを押すのですね!!!
やってみたところ、出来ました\(^△^)本ッ当に!先生ありがとうございましたm(__)m(陳謝)
すごく困ってました^^;こんな解釈が悪いやつに教えれるなんてみんな先生レベルだよ~ww
これで進めます、URLも参考(家宝)にして頑張りますありがとうございました(#^.^#)/。
No.5
- 回答日時:
「125」をちゃんと自分で入力して、Enterキーを押してますか?
あんま関係ないですが、勉強ならscanfはscanfのままで学習した方が良いと思います。
_CRT_SECURE_NO_DEPRECATEを定義しとけば、とりあえず警告は表示されなくなると思います。
というのも、scanfの引数をそのままにしてscanf_sにすると動作が変わる状況があるからです。
ちゃんと125を入力してEnterキー押したんですけどダメでした
本の通りに 整数値を入力してください----125
あなたの入力した数値は125ですね
が出力されない~とくにコレ↑
>scanfの引数をそのままにしてscanf_sにすると動作が変わる状況があるからです。
動作が変わるのですか!?。覚えておきます。
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)は単なるどじでしょう。
No.3
- 回答日時:
その本は持ってないのですが
>整数値を入力してください----
が出力されたところで
>125
を入力すると
>あなたの入力した数値は125ですね
と出力される。
違う数値を入力すると125ではなくその入力した数値が出力される。
というのが、そのプログラムの期待される動作じゃないですか?
数値を入力する方法を学ぶのが目的で
printf("整数値を入力してください----125");
じゃなくて
printf("整数値を入力してください----");
で。
いや、整数値を入力してください----125は出力(表示)されるのに
あなたの入力した数値は125ですね←が表示されないのです本の通りに・・
ごめんなチャイまだ色々知識が(用語とか)半端で解釈や説明うまくできなくて。
(やっぱ独学じゃむりがあるかな~^-^;)
No.2
- 回答日時:
確認してないけどストリームバッファで止まってるからだと思う。
× printf("あなたの入力した数値は%dですね",seisu);
○ printf("あなたの入力した数値は%dですね\n",seisu);
で出んじゃないかな。
ストリームバッファ・・・?
こ、コホン・・
○ printf("あなたの入力した数値は%dですね\n",seisu);
で出力しましたがダメでした;それと僕の質問文章に表記もれがありました
すみません<(_ _)>
printf("あなたの入力した数値は%dですね",seisu);とは書いてなくってちゃんとテキスト通りにprintf("あなたの入力した数値は%dですね\n",seisu);と書いて、ビルド→デバッグなしで開始、と本通りにやっているんですけど表示されないのですよ↓も~。
No.1
- 回答日時:
> と書いてビルドをしても警告1になります、あと
警告だから気にしないことです。
> 整数値を入力してください----125
> だけが出力されます(コマンド プロンプトに)・・・
整数値(例えば125)を入力したらどうなる?
入力するまでは,出力されるものはそれだけであるのが正しい動作です。
> これ以降いっぱいscanfのこといっぱい出るのにぃ~~
scanfのことなど忘れてしまうのが一番です。このような例題でしか使わないような関数ですし...
え!?、 整数値を入力してください----125 ←のだけの出力(表示)だけで
正解なのですか!?本には 整数値を入力してください----125 ←らが
あなたの入力した数値は125ですね
コマンド プロンプトに表示されると書いてあったんですけど本の方が間違え?
すみません知識が半端なもので・・;
あと、警告だからって気にしなくてもOKなのですか?。あと後支障とかきたさない?(う~んこのまま続けて見ようかな・・?お勉強・・)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
java初心者です。入力されたの...
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
プログラミングの問題です 「金...
-
cout関数を使っているのですが...
-
プログラミング初心者です。 Py...
-
"scanf"でエンターで改行させな...
-
Userformの入力順序をタブオー...
-
scanfが2回使えない・・・?;
-
ワードで文字を入力する時の変...
-
if文の条件にscanf関数を使うと…?
-
入力値が1以下、かつ数字以外の...
-
java 入力された文字列を数値に...
-
プログラム(C)
-
scanf関数について
-
WindowsでEOF
-
2進数の1の数を数える問題
-
Linuxで入力待ちなしkeyread関...
-
プログラムC言語の整数の約数に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報