atoi()
是C标准的一部分吗?
如果char*
未标准化,我应该如何将int
转换为atoi()
?
答案 0 :(得分:9)
是的,atoi()
是标准C的一部分 - 不幸的是。
我说“不幸”,因为它没有错误检查;如果它返回0,你无法分辨它是因为你传递了它"0"
还是因为你传递了它"hello, world\n"
(有可能有未定义的行为,但通常会返回0 )。
strtol()
函数使用起来比较复杂,但它会进行正确的错误检查。它会返回long
结果,然后您可以将其转换为int
- 最好在检查到INT_MIN
到INT_MAX
之后。
参考:N1570 7.22.1.2。
答案 1 :(得分:1)
它是C Standard Library的一部分,应在stdlib.h
答案 2 :(得分:1)
是的,这是标准的。来自man atoi
:
NAME atoi,atoi_l - 将ASCII字符串转换为整数
LIBRARY 标准C库(libc,-lc)
#include <stdlib.h>
然而,它也说:
atoi()函数已被strtol()弃用,不应该 用于新代码。
答案 3 :(得分:1)
atoi
是当前C标准的一部分,但考虑strtol
,它也是标准的一部分,并且具有更强大的界面。