atoi的介绍:
相关的代码区域:
int my_atoi(char * str)
{
char *tmp = str;
int flag = 0;//0代表正数,1代表负数
while( *tmp == ' ' || *tmp == '\r' || *tmp == '\n' || *tmp == '\t')
{
tmp++;
}
if (*tmp == '-')
{
flag = 1;
tmp = tmp + 1;//会从第二个字符开始转化
}
else if (*tmp == '+')
{
tmp = tmp + 1;
}
int num = 0;
while (*tmp != '\0')
{
num = num * 10 + (*tmp - '0');
tmp++;
}
if(0 == flag)
{
return num;
}
else
{
return -num;
}
}
在这函数中
num = num * 10 + (*tmp - '0');
这句话的意思是经过一顿操作获取到了字符之后,先用*temp获取字符,减去ASCII的0的值(48),这样就可以获得当前的字符所对应的数值。
例如,对于字符串"123",首先取出字符'1',减去'0'的ASCII码值48,得到数字1。然后,将当前数字1乘以10,再加上新获得的数字2,得到新的数字12。接着,将新的数字12再乘以10,再加上新获得的数字3,最终得到数字123。