私はに関する問題に直面しています。この問題をここで多く探していて、多くの似たようなものを見つけたので、この質問に重複しないでください。なぜこのC scanfが自動的にスキップされるのですか?
私はこれを実行すると:
char c;
int a, b;
scanf("%d", &a);
scanf("%c", &c);
scanf("%d", &b);
を次に最初の2 scanf
が正常に働いていたが、第3回1が完全にスキップされます。私はこのフォーラムのさまざまな投稿を検索してこの問題について調べ、多くの情報を見つけましたが、何か他のものを知りたいと思っています。
私はすでに見つかっ最も簡単な解決策は、あろうこと:
scanf("%d %c %d", &a, &c, &b);
、別のソリューションを使用している可能性:
getchar();
そして、私はまた、私の問題の背後にある理由は、それが余分に書き込みされていることがわかります新しい行の文字\n
をバッファに追加したので、3番目の行はスキップされました。しかし、さらに研究するために、別のscanf
のchar
タイプを使用した場合、2番目のscanf
の後にそれが動作することがわかりました。つまり、私の場合、char
タイプの後にinteger
タイプの入力を取ると問題が発生します。私はもう一度多くの人が逆の場合に問題があったことを見て、integer
の後にchar
の入力を取ることができなかった。今私はscanf
のCでサポートされている正確なスキームについて明らかにしたいと思います。これは、同様の問題に直面する理由と、なぜchar
がchar
の後にスキャンできるのですが、integer
はスキャンできません。ありがとうございます。
私はあなたがそれを言う方法に問題があると思っています。他の人が持っている他のものが実際の問題です。 –
scanfはスキップされません。 scanfの結果が何であるかを調べるには、戻り値を確認してください。 –
特定のコードについてのヘルプを得るには、[MCVE](http://stackoverflow.com/help/mcve)を投稿し、入力した入力内容を正確に指定してください。 –