/*将字符串str从第一个非空和非符号(-、+)字符开始转化为int,直至非数字结束。如果开始字符非数字、结果超过int的范围均返回0,其它返回转化的结果以十进制表示*/
int atoi(const char *str)
{
int result=0;//函数的返回值
int sign=1;//符号位
int ch;//一位字符转化后对应的数字
while(1) //过滤掉开始的空格
if(*str==' '||*str=='/t') str++;
else break;
if(*str=='-') {sign=-1;str++;}
else if(*str=='+') str++;//置符号位
while(*str>='0'&&*str<='9')
{//注意*str是字符,所以是'0'、'9'而不是0、9
ch=*str-'0';
result=result*10+ch;
if(result*sign<-32768||result*sign>32767}
{result=0;break;}//判断越界,
//int按2字节存储处理
str++;
}
return result*sign;
}