为什么我不应该使用atoi()?

时间:2013-07-17 20:54:22

标签: c

有人告诉我,我不应该使用atoi(),而应该始终使用strtol()atoi()我不应该使用它有什么问题? strtol()真的是正确的用法吗? (那么strtol()返回long而不是像int这样的atoi()这一事实呢?

3 个答案:

答案 0 :(得分:20)

来自您自己的link

  

atoi()函数由strtol()包含但保留,因为它在现有代码中广泛使用。 如果未知该数字在范围内,则应使用strtol(),因为不需要atoi()来执行任何错误检查。

或者

atoi已过时

答案 1 :(得分:4)

使用atoi无法确定传递的字符串是否确实是一个数字,因为没有特殊错误“return”。它也只处理十进制值(基数为10),因此无法处理任意基数,例如strtol。此外,它无法处理大于有符号整数的值(大多数平台上为32位)。

答案 2 :(得分:4)

如果字符串太大而无法转换,则会导致未定义的行为,因为该字符串的值可能太大而且可能不在范围内。在这种情况下(数字未知在范围内),应使用strtol()