【问题标题】:printf executes multiple times only on certain inputsprintf 仅在某些输入上执行多次
【发布时间】:2018-04-10 12:24:47
【问题描述】:

当输入为“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

为什么会发生这种情况,我该如何解决?

【问题讨论】:

    标签: printf scanf do-while logical-or


    【解决方案1】:

    尚未得到答复,所以这不会造成伤害。

    我不确定它是否正确,但是当我今天阅读更多关于 C 的内容时,我的猜测是它一定会发生,因为 scanf 将输入作为八进制数读取,因为它从零开始。而奇怪的行为可能是因为八进制中没有 08 和 09。

    【讨论】:

      猜你喜欢
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 2021-05-14
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多