#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
int my_atoi(char *str)
{
int flag=0;
int number=0;
if(str==NULL)
{
return -1;
}
if(*str=='\0')
{
return -1;
}
if(*str=='+')
{
flag=1;
str++;
}
if(*str=='-')
{
flag=-1;
str++;
}
while(*str!='\0')
{
if(*str==' ')
{
return -1;
}
else if(number>INT_MAX)
{
return -1;
}
else if(number<INT_MIN)
{
return -1;
}
else
{
char ze_ro='0';
int zero=(int)(ze_ro);
number=number*10+((int)*str-zero);
printf("%d\n",flag*number);
str++;
}
}
return flag*number;
}
直接附上代码,主要是感觉要考虑很多种异常情况,特别是正负号。