函数解析Linux下atoi函数的威力(linuxatoi)
Linux 下的 atoi 函数是C 语言中文本转换为 int 类型数字的最简单函数,其中字母 a 表示 ascii to integer(从 ASCII 码转换为整数)。它从参数 nptr 所指向的字符串中取得一个整数值,根据该字符串中的内容,atoi 函数可以识别出十进制,八进制或十六进制的数值表示,结果是以 int 型返回。
具体的int型返回值规则如下:
1.如果 nptr 所指向的字符串为空字符串或没有可转换的值,函数返回默认值 0;
2.如果 nptr 所指的的字符串表示的值不能被存储在long变量中,返回 0 或者 INT_MAX 当返回值大于 INT_MAX;
3.如果 nptr 所指向的字符串表示的值可以被存储在 long 类型变量中,函数可以返回转换后的值。
atoi 函数对字符串转换成整数的处理非常强大,仅需传入字符串参数,就可以将字符串转换为整数型。它还支持将八进制、十六进制的字符串转换为 int 类型,其原理简单解释如下:所转换的字符串从头开始依次扫描,若遇到符号,先判断看某个字符是否是有效字符(数字或字母abcdef),如果是,在统计得到有效数字后,根据进制(10 、 8 、 16 )计算出它的值,最后返回十进制结果。
下面是 atoi 函数的常见用法:
“`
#include
#include
int main()
{
int num;
char cnum[30]=”1234″; /* 把字符串”1234″ 转换为数字 */
num = atoi(cnum);
printf(” num is %d\n”,num);
return 0;
}
“`
执行上面代码,将会输出: num is 1234 。
从上面的讲述我们可以看出 atoi函数的强大,它会将字符串中的整数转换为int类型的变量,比如 “1234”转换为1234 的int 类型变量。 此外,它还可以识别将8进制和16进制的字符串转换为整数类型变量。因此 atoi 函数已经展示出了它实现文本转换为 int 类型数字的强大威力。