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

对于此代码:

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

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

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

我错过了什么?

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

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

这是因为扫描中的'\n …如果你想进入一个新的行,只需要:

 printf ("\n"); 

它会给你一个空行……

的scanf( “%d \ n”,&ⅰ);

读取数字直到出现非空格字符(忽略所有空格和数字后面的’\ n’)。