[解決済み】シンプルなC言語のscanfが機能しない?重複
2022-02-20 04:36:36
質問
などとやってみると
int anint;
char achar;
printf("\nEnter any integer:");
scanf("%d", &anint);
printf("\nEnter any character:");
scanf("%c", &achar);
printf("\nHello\n");
printf("\nThe integer entered is %d\n", anint);
printf("\nThe char entered is %c\n", achar);
これは整数を入力し、2番目の
scanf
を完全に入れ替えたとき、これは本当に奇妙なことです。
char
スキャンフが先)、うまくいきます。一体何が問題なのでしょうか?
解決方法は?
を使用して入力を読み取る場合
scanf
の場合、リターンキーが押された後に入力が読み込まれますが、リターンキーで生成された改行は
scanf
を読み込むと、次回は
char
標準入力から読み込まれるように改行が用意されています。
回避する方法の1つは
fgets
を使って入力を文字列として読み込み、必要なものを抽出します。
sscanf
としています。
char line[MAX];
printf("\nEnter any integer:");
if( fgets(line,MAX,stdin) && sscanf(line,"%d", &anint)!=1 )
anint=0;
printf("\nEnter any character:");
if( fgets(line,MAX,stdin) && sscanf(line,"%c", &achar)!=1 )
achar=0;
改行を消費するもう一つの方法は、次のようになります。
scanf("%c%*c",&anint);
. また
%*c
は、バッファから改行を読み込んで破棄します。
これを読むといいかもしれません。
関連
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 `S_ISREG()` とは何ですか、そして何をするのですか?
-
[解決済み】組み込み関数「malloc」の暗黙の宣言の非互換性
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み】スタックスマッシュを検出しました