【发布时间】:2021-11-29 11:54:49
【问题描述】:
我注意到这段代码在某些情况下会读取错误的值。
#include <stdio.h>
int main()
{
int a, b;
printf("Enter 2 numbers:");
scanf("%2d:%2d", &a, &b);
printf("\n\n %d:%d", a, b);
}
代码应该读取两个 2 位数字,如果输入类似于“15:33”,它可以正常工作,但是,当输入是“151:33”时,输出应该再次是“15:33”,而是,它的“15:32764”。
这里发生了什么?
【问题讨论】:
-
scanf的结果(实际返回值)并不是偶然出现的。它会告诉你成功解析的参数数量,你最好检查一下,而不是幸福地假设 IO 只是“工作”。 -
阅读文档,它描述了如何阅读“除了':'之外的任何东西”。