#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include<limits.h>intmy_hex(constchar* str){int sum =0;while(isxdigit(*str)){int x =0;if(isdigit(*str)){
x =*str -'0';}else{char ch =tolower(*str);
x = ch -'a'+10;}
sum = sum *16+ x;++str;}return sum;}intmy_oct(constchar* str){int sum =0;while(isdigit(*str)&&*str!='8'&&*str!='9'){
sum = sum *8+*str -'0';++str;}return sum;}intmy_dec(constchar* str){//十进制int sum =0;while(isdigit(*str)){
sum = sum *10+*str -'0';++str;}return sum;}intmy_atoi(constchar* str){int sum =0;int num =0;if(str == nullptr)return num;int tag =0;//1 负数 0正数while(isspace(*str))++str;if(*str =='-'){
tag =1;++str;}if(*str =='+'){
tag =0;++str;}if(*str =='0'){if(*(str +1)=='x'||*(str +1)=='X'){
sum =my_hex(str +2);}else{
sum =my_oct(str +1);}}else{
sum =my_dec(str);}if(tag ==1){
sum =-sum;}return sum;}intmain(){constchar* str[]={"12321",//12321"0123",//123" -234",//-234"0x2a4f"," +2234 234",//2234"23432.234"//23432};for(int i =0; i <6;++i){printf("%d\n",my_atoi(str[i]));}return0;}