有人告诉我,我不应该使用atoi()
,而应该始终使用strtol()
。atoi()
我不应该使用它有什么问题?strtol()
使用它真的是正确的吗?(那么strtol()
返回 along
而不是int
like的atoi()
事实呢?)
问问题
8443 次
3 回答
27
从您自己的链接:
atoi() 函数被 strtol() 包含,但由于它在现有代码中广泛使用而被保留。如果不知道该数字在范围内,则应使用 strtol(),因为 atoi() 不需要执行任何错误检查。
或者
atoi
已过时
于 2013-07-17T20:57:03.960 回答
6
由于atoi
没有特殊错误“return”,因此无法确定传递的字符串是否真的是数字。它也只处理十进制值(以 10 为基数),因此不能处理任意基数,例如strtol
. 它也不能处理大于有符号整数(大多数平台上为 32 位)的值。
于 2013-07-17T20:58:08.653 回答
5
如果字符串很大并且无法转换,则会导致未定义的行为,因为该字符串的值可能太大并且可能不在范围内。在这种情况下(数字不知道在范围内)strtol()
应该使用。
于 2013-07-17T20:59:57.363 回答