首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

运行结果居然为0,不知道错在哪了?解决方案

2012-03-15 
运行结果居然为0,不知道错在哪了?编写将字符串转换成整数的函数atoi,只处理输入字符串仅由0-9, - , + ,和

运行结果居然为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;
}

热点排行