int a_to_i(const char *str)
{
int cur; //当前字符
int total;//当前整型数据
int sign; //数据符号
//去点前面的空白符
while(isspace((int)(unsigned char)*str))
{
str++;
}
//如果*str最高位是1,那么直接将其付给int型时会变成负数,所以必须先转成unsigned char型
cur = (int)(unsigned char)*str++;
sign = cur;
//如果有符号,则当前字符向后移动一个
if(cur == '-' || cur == '+')
{
cur = (int)(unsigned char)*str++;
}
total = 0;
//将数字字符串转化成整数
while(isdigit(cur))
{
total = total*10 + cur - '0';
cur = (int)(unsigned char)*str++;
}
if(sign == '-') //前面有负号
{
return -total;
}
else //前面没有符号或有正号
{
return total;
}
}
实现atoi函数
最新推荐文章于 2024-03-27 15:14:46 发布