をスキップしています。私の第二scanfのは()
出力は次のようになります。 リンゴとオレンジ
あなたの2つの以上の好きな果物は何ですか: (入力を待ちません)
があなたの2つの好きな果物は何ですか
これを解決するにはどうすればよいですか?
をスキップしています。私の第二scanfのは()
出力は次のようになります。 リンゴとオレンジ
あなたの2つの以上の好きな果物は何ですか: (入力を待ちません)
があなたの2つの好きな果物は何ですか
これを解決するにはどうすればよいですか?
scanf()
%s
は、空白を含む文字列を受け入れません。ホワイトスペースを持つ文字列の
、これは改行文字「\n
」まですべてを読んでいましたfgets()
またはscanf("%[^\n]s", string);
を使用しています。例えば
:
printf("What are your 2 favourite fruits:\n");
scanf("%[^\n]s", s1);
printf("What are your 2 least favourite fruits:\n");
scanf("%[^\n]s", s2);
'%[^ \ n]'は改行まで読み込むのに十分であることに注意してください。 's'は何にもマッチしませんが、失敗したとは決して言えません。 (%[^ \ n]は完全な変換仕様であり、角括弧は '%s'変換仕様の修飾語ではありませんが、完全に別の変換仕様です。 \ n] ''%s'は先行する空白をスキップし、次に空白以外の空白文字のシーケンスと一致し、次の行で停止します空白 "となる。 –
何*あなたの実際の入力*ですか? 「スキップした」とはどういう意味ですか?関数呼び出しの戻り値を確認しましたか? 's1'と' s2'とは何ですか?そして、*私たちを見せるために、[最小、完全、そして実証可能な例](http://stackoverflow.com/help/mcve)を作成しようとしてください。 –
文字列であるので 's1'と' s2'の前に '&'を使わないでください。 – Cherubim
私にとってうまく動作します(第2引数から '&'を取り除くのはポインタなので)。 – stackptr