函数解析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型的值。