输入一个字符串比如“+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的范围的情况。
转载于:https://blog.51cto.com/2627lounuo/1707218