输入一个字符串比如“+1234”,将其转换成对应的数字1234输出,若是“-1234”,则输出-1234:

#include <stdio.h>
enum Charec{TRUE,FALSE};
int check = FALSE;
int my_atoi(const char *str)
{
 int num = 0;
 if((str != NULL)&&(*str != '\0'))
 {
  int minus = 0;
  if(*str == '+')
   str++;
  else if(*str == '-')
  {
   str++;
   minus = 1;
  }
  while(*str != '\0')
  {
   if((*str >= '0')&&(*str <= '9'))
   {
    int flag = minus?-1:1;
    num = (num*10)+flag*(*str-'0');
    if((!minus&&(num>0x7FFFFFFF))||(minus&&((signed int)num<0x80000000)))
    {
     num = 0;
     break;
    }
    str++;
   }
   else
   {
    num = 0;
    break;
   }
  }
  if(*str == '\0')
  {
   check = TRUE;
  }
 }
 return num;
}
int main()
{
 char str[50];
 int ret = 0;
 scanf("%s",str);
 ret = my_atoi(str);
 printf("%d\n",ret);
 return 0;
}

为将输入字符串“0”输出结果0和输入空字符串输出结果也同样为0这两种情况区分开,特意设置了一个全局枚举常量,这样可以检查枚举常量的值来区分,而且须考虑输入的字符串转换成对应的数字超出int的范围的情况。