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

时间:2012-10-01 19:34:37

标签: c type-conversion atoi

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

如果char*未标准化,我应该如何将int转换为atoi()

4 个答案:

答案 0 :(得分:9)

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

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

strtol()函数使用起来比较复杂,但它会进行正确的错误检查。它会返回long结果,然后您可以将其转换为int - 最好在检查到INT_MININT_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,它也是标准的一部分,并且具有更强大的界面。