0

atoi()C标准的一部分吗?

如果没有标准化,我应该使用什么来转换char*intatoi()

4

4 回答 4

9

是的,atoi()是标准 C 的一部分——不幸的是。

我说“不幸的是”,因为它没有错误检查;如果它返回 0,您无法判断是因为您传递了它"0"还是因为您传递了它"hello, world\n"(它可能具有未定义的行为,但通常返回 0)。

strtol()函数使用起来更复杂,但它会进行适当的错误检查。它返回一个long结果,然后您可以将其转换为int- 理想情况下,在检查它是否INT_MININT_MAX.

参考:N1570 7.22.1.2。

于 2012-10-01T19:39:40.170 回答
1

它是C 标准库的一部分,应该在stdlib.h

于 2012-10-01T19:37:16.473 回答
1

是的,这是标准的。来自man atoi

NAME atoi, atoi_l -- 将 ASCII 字符串转换为整数

LIBRARY 标准 C 库 (libc, -lc)

#include <stdlib.h>

但是,它也说:

atoi() 函数已被 strtol() 弃用,不应在新代码中使用。

于 2012-10-01T19:37:19.513 回答
1

atoi是当前 C 标准的一部分,但考虑strtol哪个也是标准的一部分并且具有更健壮的接口。

于 2012-10-01T19:38:44.987 回答