前日質問にて以下のプログラムで、二度目のscanf()が無視されてしまう
旨質問したところ、1度目のscanfでの入力でエンターがバッファに残って
いるため、それを取り込んでしまうという回答いただきました。
改善方法として(*)のscanf関数で「%c」の前に空白を入れたところ
正常に動作し、改善されたのですが、なぜ改善されたのかご教示願えませんでしょうか?
よろしくお願いします
#include <stdio.h>
int main(void)
{
int g;
char ch;
do {
printf("何ガロンですか?: ");
scanf("%d", &g);
printf("%.2fリットルです\n", 3.7854 * g);
printf("また計算しますか?Y/N : ");
(*) scanf("%c", &ch);
} while(ch == 'Y' || ch == 'y');
return 0;
}
No.1ベストアンサー
- 回答日時:
★アドバイス
・次のリンクの一番下に空白文字の読み飛ばし方法が載っています。
http://www9.plala.or.jp/sgwr-t/c/sec05.html→『第5章 標準入出力関数(1)』
・以上
参考URL:http://www9.plala.or.jp/sgwr-t/c/sec05.html
ありがとうございます。
この類の誤作動は常識なんですね
気付かなかったのは本の読み方が悪いのか、選んだ本が悪いのか・・
はは・・
初歩的なところで躓くとストレスは非常に大きいですので
解決してすっきりしました。
本当にありがとうございます
No.3
- 回答日時:
・以上
★追記。
・次のサイトも読んでみて下さい。
http://wisdom.sakura.ne.jp/programming/c/c58.html→『scanf()関数』
基本的には scanf の仕様です。
scanf でも空白を含めて入力するには scanf 出利用可能な『正規表現』を使います。
・以上。
参考URL:http://wisdom.sakura.ne.jp/programming/c/c58.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
-
4
全角半角を調べるライブラリ関数はありますか?
C言語・C++・C#
-
5
関数から配列を返すには?
C言語・C++・C#
-
6
C言語 exitの使い方
C言語・C++・C#
-
7
構造体のメンバをfor文で回したい
C言語・C++・C#
-
8
fgetsでバッファ残留文字列を無視して読み込む
C言語・C++・C#
-
9
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
-
10
fgets関数を使用したときの文字あふれについて
C言語・C++・C#
-
11
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
12
バッファとは何ですか
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
2進数の1の数を数える問題
-
C言語scanf_sで何故か2回入力に...
-
Excel VBAで、Application.Inpu...
-
WindowsでEOF
-
コマンドプロンプトからのEOFの...
-
scanf が無視されます
-
c言語の数当てゲームプログラム...
-
プログラミングの問題です 「金...
-
キーボードを押すまで処理を中...
-
キー入力制限について
-
VB.NETで16進数+16進数や16進...
-
Eclipseでコマンドラインを入力...
-
"scanf"でエンターで改行させな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語 逆ピラミッドの作り方
-
double型が正常に認識されてい...
-
ワードで文字を入力する時の変...
-
コマンドプロンプトからのEOFの...
-
Linuxで入力待ちなしkeyread関...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
cout関数を使っているのですが...
-
enterでループ終了
-
"scanf"でエンターで改行させな...
-
C言語でgetchar();が上手く使え...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報