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

Sph*_*inx 4 c c++ format scanf formatted-input

对于此代码:

int i;
scanf("%d\n",&i);
Run Code Online (Sandbox Code Playgroud)

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

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

我错过了什么?

Lih*_*ihO 14

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

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