当输入为“08”或“09”时,程序多次执行printf命令,而不是其他类似的数字,例如“03”或“07”。
do
{
printf("Enter date:");
scanf("%i/%i/%i", &d, &m, &y);
}
while (d !=0 || m != 0 || y != 0);
这是输出(数字由用户输入) -
Enter date:3/6/8
Enter date:3/6/08
Enter date:Enter date:04/05/06
Enter date:08/08/08
Enter date:Enter date:Enter date:Enter date:01/02/03
Enter date:04/05/06
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
还没有回答,所以这不会受到伤害。
我不确定它是否正确但是当我今天阅读更多有关C的信息时,我的猜测是必须发生的,因为scanf正在将输入读作八进制数,因为它从零开始。奇怪的行为可能是因为八进制中没有08和09。