intmy_dec(constchar* str){int sum =0;while(isdigit(*str)){
sum = sum *10+*str -'0';
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_hex(constchar* str){int sum =0;while(isxdigit(*str)){if(isdigit(*str)){
sum = sum *16+*str -'0';}else{
sum = sum *16+tolower(*str)-'a'+10;}
str++;}return sum;}intmy_bit(constchar* str){int sum =0;while(isdigit(*str)){
sum = sum *2+*str -'0';
str++;}return sum;}intmy_atoi(constchar* str){int sum =0;int tag =0;//0:整数 1:负数if(str ==NULL||*str =='\0')//指针为空(从逻辑上讲不指向任何东西),空串{return sum;}while(isspace(*str))str++;if(*str =='-'){
tag =1;
str++;}elseif(*str =='+'){
tag =0;
str++;}if(*str =='0'){if(*(str +1)=='x'||*(str +1)=='X'){
sum =my_hex(str +2);}elseif(*(str +1)=='b'||*(str +1)=='B'){
sum =my_bit(str +2);}else{
sum =my_oct(str +1);}}else{
sum =my_dec(str);}if(tag){
sum =-sum;}return sum;}intmain(){constchar* str[]={"1234"," 1234"," -1234"," +1234","012342578","+0x123badr","011111","01110111"};for(int i =0; i <sizeof(str)/sizeof(str[0]);++i){printf("%s=>%d\n", str[i],my_atoi(str[i]));}system("pause");return0;}