1.返回值是long long 类型
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <iostream>
long long my_atoi(char *str){
long long result = 0;
int flag = 1;
while (*str != '\0'){
if(*str == '-'){
flag = -1;
str++;
}
while(*str == '+'){
flag = 1;
str++;
}
while(*str == ' '){
str++;
}
if(*str >= '0' && *str <= '9')
result = result * 10 + ( *str - '0');
else
break;
str++;
}
return result * flag;
}
int main(){
char *str = "++++23 3442324323 42 fghi";
long long ret = 0;
//base
// while(*str >= '0' && *str <= '9'){
// ret = ret*10 + (*str - '0');
// str++;
// }
ret = my_atoi(str);
printf("ret = %ld\n",ret);
}
2.返回值是int类型
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int my_atio(char *str){
int flag = 1;
int ret = 0;
while(*str != '\0'){
if(*str == '-'){
str++;
flag = -1;
}
if(*str == ' ')
str++;
if(*str == '+')
str++;
if(*str > '9')
str++;
if(*str >= '0' && *str <= '9'){
ret = ret * 10 + (*str - '0');
str++;
}
}
//做个限制:int类型范围:1<<31 -1 ----- -(1<<31)
if(ret > (1<<31 -1) || ret < (-(1<<31)))
return 0;
return ret * flag;
}
int main(){
char *str = "12345674444444444444444444444";
int ret = my_atio(str);
printf("ret = %d\n",ret);
return(0);
}