我正在尝试执行这段代码。
#include <stdio.h>
int main(void)
{
printf("Start from here\n");
int e, f, g, h;
scanf("%d,%d", &e, &f);
scanf("%d, %d", &g, &h);
printf("%d %d %d %d", e, f, g, h);
}
当我输入2,0
或匹配第一个scanf()
的格式字符串的内容时,第二个scanf()
也会执行。
但是,如果我在第一个scanf()
中输入像2-0
这样的内容,程序将跳过第二个scanf()
并直接进入printf()
。
例如,下面是程序的示例运行输入和输出。第二行是输入。Start from here
1-2
1 0 -2 -856016624u
注意程序如何完全跳过第二个scanf()
,直接进入printf()
。为什么这里跳过了第二个scanf()
?
1-2
应该是1,-2
吗?也就是说,在数字之间需要加上一个逗号。因为这是您告诉scanf
需要输入的格式。 - kaylumscanf
正在执行。e
得到了1
,g
得到了-2
。 - Nishant Bhaktascanf
的返回值?阅读手册页面可能会有帮助。 - Ed Healscanf
—— 程序执行了它,但结果与您的期望不同。请阅读有关scanf()
的手册,以了解当您提供与格式不兼容的输入时会发生什么,以及如何检测和处理错误。 - CiaPanscanf()
返回值(而不是参数值)的时候,可以通知代码在第一次调用scanf()
中无法读取两个参数以及第二次调用scanf()
失败无法读取两个参数的情况之一。 - user3629249