このコードの場合:
int i;
scanf("%d\n",&i);
2 つの数値を入力するまでプログラムを停止できません。
非常に奇妙だと思います。入力が適切な場合、scanf は 1 を返すことを知っています。「12a 'Enter'」、「12 'Enter'2」などを入力すると、i=12 で問題ありません。 、何かを入力すると int が異なるか、「Enter」と別のものを入力すると、scanf が 1 を返すようです。
私は何が欠けていますか?
このコードの場合:
int i;
scanf("%d\n",&i);
2 つの数値を入力するまでプログラムを停止できません。
非常に奇妙だと思います。入力が適切な場合、scanf は 1 を返すことを知っています。「12a 'Enter'」、「12 'Enter'2」などを入力すると、i=12 で問題ありません。 、何かを入力すると int が異なるか、「Enter」と別のものを入力すると、scanf が 1 を返すようです。
私は何が欠けていますか?
「使用時に2つの数字を入力するまでプログラムを停止できませんscanf("%d\n",&i);
」
この形式scanf
では数字を読み取ってに保存しますがi
、この「読み取り」は続き、空白文字以外の文字が続くまで続き\n
ます。1 2
これが、入力がこれscanf
を停止させる理由です。
この場合、入力形式に改行を指定しないでください。scanf("%d",&i);
代わりに使用してください。
これ'\n
は scanf の ためです...新しい行に移動したい場合は、次のように入力してください:
printf ("\n");
そしてそれはあなたに空の行を与えるでしょう...
scanf("%d\n",&i);
非空白文字が現れるまで数値を読み取ります (数値の後のすべての空白と '\n' を無視します)。