剑指offer——面试题49:不使用atoi库函数实现把字符串转换成整数

来源:互联网 发布:c语言文件指针换行 编辑:程序博客网 时间:2024/05/16 08:16

下面是参考代码:

enum Status {kValid = 0, kInvalid};int g_nStatus = kValid;int StrToInt(const char* str){    g_nStatus = kInvalid;    long long num = 0;    if(str != NULL && *str != '\0')     {        bool minus = false;        if(*str == '+')            str ++;        else if(*str == '-')         {            str ++;            minus = true;        }        if(*str != '\0')         {            num = StrToIntCore(str, minus);        }    }    return (int)num;}long long StrToIntCore(const char* digit, bool minus){    long long num = 0;    while(*digit != '\0')     {        if(*digit >= '0' && *digit <= '9')         {            int flag = minus ? -1 : 1;            num = num * 10 + flag * (*digit - '0');            if((!minus && num > 0x7FFFFFFF)                 || (minus && num < (signed int)0x80000000))            {                num = 0;                break;            }            digit++;        }        else         {            num = 0;            break;        }    }    if(*digit == '\0')     {        g_nStatus = kValid;    }    return num;}

0 0
原创粉丝点击