跳转到内容

C 编程/stdlib.h/atoi

来自维基教科书,自由的教科书

atoi 是 C 编程语言中的一个函数,用于将字符串转换为整数的数值表示形式。atoi 代表 ASCII to integer。它包含在 C 标准库头文件 stdlib.h 中。它的原型如下

int atoi(const char *str);

str 参数是一个字符串,用字符数组表示,包含一个带符号整数的字符。该字符串必须以空字符结尾。当 atoi 遇到没有数值序列的字符串时,它会返回零 (0)。

atoi 函数有几种变体,atolatofatoll,分别用于将字符串转换为 longdoublelong long 类型。atoll 以前称为 atoq,包含在 C99 中。

不可能判断字符串是否包含表示数字 0 的有效数字序列或无效数字,因为该函数在这两种情况下都会返回 0。较新的函数 strtol 没有这种缺陷。

atoi 在某些操作系统上既不是线程安全的,也不是异步取消安全的。[1]

此外,atoi 仅转换十进制 ASCII 值(这可能也是优势,取决于观点)。strtol 和其他函数支持十六进制和八进制等备用进制。

标准一致性

[编辑 | 编辑源代码]

atoi、atof 和 atol 函数是 ISO 标准 C 库(C89)的一部分,而 atoll 函数由 C99 添加。

然而,由于返回 0 的模糊性以及在某些操作系统上缺乏线程安全性和异步取消安全性,atoi 被认为已被 strtol 弃用。[1]

参考文献

[编辑 | 编辑源代码]

Version 7 Unix 手册页 © 1979 by Bell Telephone Laboratories, Incorporated。

Version 1 Unix 手册页 for atoi 由 Ken Thompson 编写(1971 年 11 月)。

  1. a b http://www.codecogs.com/reference/c/stdlib.h/atoi.php
[编辑 | 编辑源代码]
华夏公益教科书