4

このコードの場合:

int i;
scanf("%d\n",&i);

2 つの数値を入力するまでプログラムを停止できません。

非常に奇妙だと思います。入力が適切な場合、scanf は 1 を返すことを知っています。「12a 'Enter'」、「12 'Enter'2」などを入力すると、i=12 で問題ありません。 、何かを入力すると int が異なるか、「Enter」と別のものを入力すると、scanf が 1 を返すようです。

私は何が欠けていますか?

4

3 に答える 3

14

「使用時に2つの数字を入力するまでプログラムを停止できませんscanf("%d\n",&i);
この形式scanfでは数字を読み取ってに保存しますがi、この「読み取り」は続き、空白文字以外の文字が続くまで続き\nます。1 2これが、入力がこれscanfを停止させる理由です。

この場合、入力形式に改行を指定しないでください。scanf("%d",&i);代わりに使用してください。

于 2012-03-01T12:27:21.143 に答える
3

これ'\nは scanf の ためです...新しい行に移動したい場合は、次のように入力してください:

printf ("\n");

そしてそれはあなたに空の行を与えるでしょう...

于 2012-05-09T20:35:29.320 に答える
0

scanf("%d\n",&i);

非空白文字が現れるまで数値を読み取ります (数値の後のすべての空白と '\n' を無視します)。

于 2014-12-03T06:07:49.290 に答える