700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言字符串atoi函数 C语言实现atoi函数

c语言字符串atoi函数 C语言实现atoi函数

时间:2022-07-29 18:52:11

相关推荐

c语言字符串atoi函数 C语言实现atoi函数

atoi函数:把字符串转换为数字(int型)

int atoi_my(char *str)

{

int flag = 1;

int number = 0;

//判断是否为空

if(str == NULL)

{

return 0;

}

//如果前面有连续空格,跳过

while(*str==' ')

{

str++;

}

//若有负号,则负数标志位置1

if(*str=='-')

{

flag = -1;

}

//跳过符号位

if(*str == '+' ||*str == '-')

{

str++;

}

//判断单个字符是否满足变换为数字

while(((*str)-'\0'-48)>=0 && ((*str)-'\0'-48)<=9)

{

number = 10*number + ((*str)-'\0'-48);

str++;

}

return flag*number;

}

升级版:atoi函数输入为字符串与进制数(2-16),返回数字

// 对单个字符返回数字

int check_number(char str, unsigned int digit)

{

int number = -1;

if(digit>10)

{

if(((str)-'\0'-48)>=0 && ((str)-'\0'-48)<=9) //处理1到9

{

number = (str)-'\0'-48;

}

else if(((str)-'\0')>=65 && ((str)-'\0')<=65+(digit-11))//处理A到F

{

number = (str)-'\0'-55;

}

else if(((str)-'\0')>=97 && ((str)-'\0')<=97+(digit-11))//处理a到f

{

number = (str)-'\0'-87;

}

}

else

{

if(((str)-'\0')>=48 && ((str)-'\0')<=48+(digit-1)) //处理1到9

{

number =(str)-'\0'-48;

}

}

return number;

}

int atoi_my2(char *str,unsigned int digit)

{

int flag = 1;

int number = 0;

int num=-1;

//判断是否为空

if(str == NULL)

{

return 0;

}

//如果前面有连续空格,跳过

while(*str==' ')

{

str++;

}

//若有负号,则负数标志位置1

if(*str=='-')

{

flag = -1;

}

//跳过符号位

if(*str == '+' ||*str == '-')

{

str++;

}

//判断单个字符是否满足变换为数字

while(-1 != (num=check_number(*str, digit)))

{

number = digit*number + num;

str++;

}

return flag*number;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。