函数解析Linux 中 atoi 函数(linuxatoi)

Linux系统中的atoi函数是用来将字符串转换成整形数值的一个标准c函数库。atoi函数使用时,要传入一个字符串指针,它会把字符串根据特定的规则转换成相应的整形值,然后将该值返回给函数调用者。atoi函数原型为 int atoi (const char *string) 。

atoi 函数在Linux中支持五种转换格式:

(1)十进制:atoi 函数可以对十进制数字类型的字符串进行转换,例如 “123”,其结果数字为123。

(2)八进制:atoi 函数可以转换八进制整形字符串,例如“0123”,其结果数字为83。

(3)十六进制:atoi 函数可以转换十六进制整形字符串,例如“0x123”,其结果数字为291。

(4)空白: atoi 函数可以忽略字符串中的前置和后置空白字符,这两类空白字符包括空格、制表符、换行符等等。

(5)+ -号:atoi 函数可以识别字符串前置的+、-号,并根据其正负属性对字符串数字加以正负符号运算。

示例:

// str:字符串 const char *str = ” 123com”;

int value = atoi (str); // 运算后 value = 123

(注:上述“com” 是字符串中的普通字符,它并不影响 atoi 函数的转换)

从源代码可以看出,atoi 函数内部实现依赖strtol函数,strtol 将字符串转换为 long 类型,并返回 long 类型的值:

long strtol (const char *str, char **endptr, int base)

因此,atoi 函数的实现比较简单,如下:

int atoi(const char *str) {

return (int) strtol(str, NULL, 10);

}

总结:

Linux中atoi函数为标准C函数库,它可以将字符串转换成整形数值。它支持五种转换格式,可以忽略字符串中的前置和后置空白字符,也可以识别字符串前置的+、-号。atoi函数内部实现依赖strtol函数,即于strtol将字符串转换为long型,返回long型的值。


数据运维技术 » 函数解析Linux 中 atoi 函数(linuxatoi)