scanf的问题(“%d \ n”,& i)

时间:2012-03-01 12:24:42

标签: c++ c format scanf formatted-input

对于此代码:

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

在我输入两个数字之前,我无法停止我的程序。

我觉得很奇怪,我知道当输入合适时,scanf会返回1。 当我输入“12a'Enter'',”12'Enter'2“等等,没关系,i = 12,似乎当我输入的东西是不同的int或输入'Enter'和另一个东西时, scanf返回1.

我错过了什么?

3 个答案:

答案 0 :(得分:14)

“在我使用scanf("%d\n",&i);时输入两个数字之前,我无法停止我的程序 虽然此格式使scanf读取数字并将其存储到i,但此“读数”仍在继续,并且一直持续到找到\n之后的非空格字符。这就是输入1 2使scanf停止的原因。

在这种情况下,您不应该在输入格式中指定换行符。 请改用scanf("%d",&i);

答案 1 :(得分:3)

这是因为scanf中的'\n ... 如果你想进入一个新的行,只需输入:

printf ("\n");

它会给你一个空行...

答案 2 :(得分:0)

<强>的scanf(&#34;%d \ n&#34;,&安培; I);

读取数字直到出现非空格字符(忽略所有空格和&#39; \ n&#39;在数字后面)。