运行结果居然为0,不知道错在哪了?
编写将字符串转换成整数的函数atoi,只处理输入字符串仅由0-9, '- ', '+ ',和空格的情况.
函数原型为:
int atoi(char* str);
提示:如果字符串不能构成一整数,可以直接返回0.但是对于以空格开始的字符串应特殊处理.
#include <iostream.h>
int atoi(char *str)
{
int ret=0,sign=0;
while(*str)
{
if(*str== ' ')
{
++str;
}
if(*str== '- ')
{
sign=1;
++str;
}
if(*str> = '0 '&&*str <= '9 ')
{
ret*=10;
ret+=*str- '0 ';
++str;
}
else
break;
}
if(sign)
return -ret;
else
return ret;
}
void main()
{
char a[]= " -1234 ";
cout < <atoi(a) < <endl;
}
[解决办法]
while(*str)
{
............
if(*str> = '0 '&&*str <= '9 ')
{
ret*=10;
ret+=*str- '0 ';
++str;
}
else
break;//当第一个字符不是数字直接就在这里跳出了.
}
改为这样
int atoi(char *str)
{
int ret=0,sign=0;
while(*str)
{
if(*str== ' ')
{
++str;
}
else
if(*str== '- ')
{
sign=1;
++str;
}
else
if(*str> = '0 '&&*str <= '9 ')
{
ret*=10;
ret+=*str- '0 ';
++str;
}
else
break;
}
if(sign)
return -ret;
else
return ret;
}