看了好多人自己写的程序实现atoi功能,但是都大部分都没加对-和+的判断,所以就在大家的基础上修改了下,可以实现对-+的判断,当然也可以注释掉
int myatoi(char const *string)
{
int value;
value = 0;
//while(!((*string >= '0' && *string <= '9')||(*string == '-')||(*string == '+')))
// string ++;
if (*string == '-')
{
string ++;
while(*string >= '0' && *string <= '9')
{
value *= 10;
value += *string - '0';
++string;
}
return value*(-1);
}
if (*string == '+')
{
string ++;
while(*string >= '0' && *string <= '9')
{
value *= 10;
value += *string - '0';
++string;
}
return value;
}
while(*string >= '0' && *string <= '9')
{
value *= 10;
value += *string - '0';
++string;
}
return value;
}
我想了一下如果能在字符串中找到一个数字也是有用的程序,如str=“dfdsa1213dsaf”,运行程序后返回1213,暂且叫做str2num吧,也是基于atoi的程序实现的
int str2num(char *str)
{
int res=0;
while(!((*string >= '0' && *string <= '9')||(*string == '-')||(*string == '+')))
string ++;
/*
while(*str < '0' || *str > '9')
{
++str;
}*/
printf("*str='%c'\n",*str);
/*出现-号时,可注释掉*/
if(*str == '-')
{
str++;
while(*str >= '0' && *str <= '9')
{
res *= 10;
res += *str - '0';
++str;
}
return res*-1;
}
/*出现+时,可注释掉*/
if(*str == '+')
{
str++;
while(*str >= '0' && *str <= '9')
{
res *= 10;
res += *str - '0';
++str;
}
return res;
}
while(*str >= '0' && *str <= '9')
{
res *= 10;
res += *str - '0';
++str;
}
return res;
}