对于此代码:
int i;
scanf("%d\n",&i);
在我输入两个数字之前,我无法停止我的程序。
我觉得很奇怪,我知道什么时候输入合适,scanf会返回1。当我输入“12a'Enter'”,“12'Enter'2”等等,就ok了,i=12 ,似乎当我输入不同的 int 或输入“Enter”和另一个时,scanf 返回 1。
我错过了什么?
对于此代码:
int i;
scanf("%d\n",&i);
在我输入两个数字之前,我无法停止我的程序。
我觉得很奇怪,我知道什么时候输入合适,scanf会返回1。当我输入“12a'Enter'”,“12'Enter'2”等等,就ok了,i=12 ,似乎当我输入不同的 int 或输入“Enter”和另一个时,scanf 返回 1。
我错过了什么?
“我无法停止我的程序,直到我在使用时输入两个数字scanf("%d\n",&i);
”
虽然这种格式可以scanf
读取数字并将其存储到i
中,但这种“读取”会继续并持续到找到后面跟着的非空白字符\n
。1 2
这就是输入scanf
停止的原因。
在这种情况下,您不应在输入格式中指定换行符。改为使用scanf("%d",&i);
。
这是因为'\n
在 scanf ... 如果你想进入一个新行,只需输入:
printf ("\n");
它会给你一个空行......
scanf("%d\n",&i);
读取数字直到出现非空白字符(忽略数字后的所有空格和'\n')。