是atoi()
C标准的一部分吗?
如果没有标准化,我应该使用什么来转换char*
?int
atoi()
是的,atoi()
是标准 C 的一部分——不幸的是。
我说“不幸的是”,因为它没有错误检查;如果它返回 0,您无法判断是因为您传递了它"0"
还是因为您传递了它"hello, world\n"
(它可能具有未定义的行为,但通常返回 0)。
该strtol()
函数使用起来更复杂,但它会进行适当的错误检查。它返回一个long
结果,然后您可以将其转换为int
- 理想情况下,在检查它是否INT_MIN
在INT_MAX
.
参考:N1570 7.22.1.2。
它是C 标准库的一部分,应该在stdlib.h
是的,这是标准的。来自man atoi
:
NAME atoi, atoi_l -- 将 ASCII 字符串转换为整数
LIBRARY 标准 C 库 (libc, -lc)
#include <stdlib.h>
但是,它也说:
atoi() 函数已被 strtol() 弃用,不应在新代码中使用。
atoi
是当前 C 标准的一部分,但考虑strtol
哪个也是标准的一部分并且具有更健壮的接口。