【发布时间】:2020-03-03 20:08:54
【问题描述】:
我需要编写一个代码,让用户输入 3-69 之间的数字。如果输入不正确,我必须在 stderr 中打印"wrong input"(如果是字母)或"out of range"(如果它不属于间隔)。
我可以处理"out of range" stderr,但不能处理另一个。当我输入一个字母时,它会自动转换为一些大数字,我想这是内存中的地址或其他东西。在这种情况下,stderr 变为"out of range" 而不是"wrong input"。有办法解决吗?
也许我将变量引入为 int 是错误的?(这些是获取输入的代码行):
int x, y;
scanf("%i %i",&x,&y);
【问题讨论】:
-
请发布重现该问题的完整但最少的代码。
int x, y; scanf("%i %i",&x,&y);本身应该没问题,但当然它不支持字母,所以它会在那里停止解析。 -
检查
scanf的返回值。它会告诉你有多少参数被成功匹配。 -
如果您希望能够输入数字和字母,请输入一个字符串,然后使用 atoi() 将其转换为整数。
-
听起来练习的很大一部分是学习解析输入。如果是这种情况,请不要使用 scanf。此外,如果输入与预期不符,scanf 确实无法正常工作。由于您正在尝试处理意外输入的情况,因此请不要使用 scanf。