【发布时间】:2022-11-19 02:35:08
【问题描述】:
对于一项任务,我需要使用 if atoi(INPUT) == 0 来检查用户输入是否为有效整数而不是 0。问题是当我输入任何以整数开头的字符串时,它会自动被接受,即使有非整数字符在整数之后,例如“1aaaabcc”被接受。
我知道 atoi() 在我刚才说的例子中,会取 1 并忽略它,但理论上这应该是用户的错误输入,因为它不是有效整数。是否可以将某些内容添加到我的代码中(不添加任何库)或使用 atoi 进行更改以解决此问题?
如果您需要示例代码以防不清楚,请告诉我。
【问题讨论】:
-
无论如何你不应该使用
atoi。使用strtol,它可以告诉你它在哪里停止解析。 -
atoi的问题在于它没有提供简单的错误处理方法。如果你使用strtol,你可以使用结束指针来检查整个字符串是否被消耗。您还可以在调用atoi之前验证必须验证的字符串是否全部为数字。