【发布时间】:2020-07-13 06:55:16
【问题描述】:
我最近遇到一个问题,我有一个由argv[]输入的字符串数组来检查它是否为整数。
我尝试使用isdigit()。但是,它会以整数形式返回 "20x"。我搜索了很多,但找不到任何对 C 语言有帮助的东西。
提前谢谢你!
【问题讨论】:
-
你看过
atoi()吗? -
是的,我有,atoi 在“20x”中使用时仍然接受它作为整数值“20”
-
确保字符串以 null 结尾,并在每个字符上使用
isdigit对其进行迭代。如果您确实需要将字符串转换为int,请不要这样做。只需使用strtol(或其同级函数之一)并尝试转换并检查错误。不要使用atoi,因为它不能报告错误。 -
isdigit检查 character 是否为 digit。您必须遍历字符,并为每个字符检查它是否是数字。 -
这实际上非常困难。听起来很滑稽,这取决于您所说的数字是什么意思!数字比开箱即用的 C 类型所能表示的要多一点。例如,
1.000 + 0i是一个整数,但解析起来很麻烦。然后,您必须绕过 C 中令人讨厌的前导零表示八进制常量的约定,因此需要避免使用例如会抛出 08 的技术。那么,您到底需要什么?