将字符串转换为整数

来源:互联网 发布:工业机器人技术编程 编辑:程序博客网 时间:2024/05/16 11:57

思路

1  考虑溢出

2 考虑正负号

3 用全局变量标识返回值的状态

代码:

bool GFlag=true;    int atoi(const char *str) {        if(str==NULL)            return 0;        GFlag=false;        bool flag=true;        if(*str=='-'){            flag=false;            str++;        }else if(*str=='+')            str++;              return strToInt(str,flag);    }    int strToInt(const char* str,bool f){        int result=0;        while(*str!='\0'){            if(*str>='0'&&*str<='9'){                int flag=f ? 1 : -1;                result=result*10+flag * (*str-'0');                if((f&&result>0x7FFFFFFF)||(!f&&result<0x80000000)){                    result=0;                    break;                }                str++;            }else{                result=0;                break;            }        }        if(*str=='\0')            GFlag=true;        return result;    }

代码2:

 int atoi(const char *str) {        if(str==NULL)            return 0;        int len=strlen(str);        int i=0;        while(str[i]==' ')            i++;        bool flag=true;        if(str[i]=='-'){            flag=false;            i++;        }else if(str[i]=='+')            i++;        long long result=0;                while(i<len){            if(str[i]>='0'&&str[i]<='9'){                result=result*10+str[i]-'0';                if(result>INT_MAX)                    return flag?INT_MAX:INT_MIN;            }else{                return flag?result:(-1)*result;            }            i++;        }        return flag?result:(-1)*result;    }



原创粉丝点击