atoi 的 C 语言实现

来源:互联网 发布:云控软件 编辑:程序博客网 时间:2024/04/28 19:54


// atoi version3: improving version2  


int atoi_mjn(const char* str) 

{  

    int n = 0;  
    char sign;  
    int c;  
  
    while (isspace(*str))  
        ++str;  
  
    sign = *str;  
    if (sign == '+' || sign == '-')  
        ++str;  
  
    while (isdigit(*str))  
    {  
        c = *str - '0';  
        if (sign != '-' && (n > INT_MAX/10 || (n == INT_MAX/10 && c >= INT_MAX%10)))  
        {  
            return INT_MAX;  
        }  
        else if (sign == '-' && (n > (unsigned)INT_MIN/10   
                              || (n == (unsigned)INT_MIN/10 && c >= (unsigned)INT_MIN%10)))  
        {  
            return INT_MIN;  
        }  
        n = n * 10 + c;  
        ++str;  
    }  
    return sign == '-' ? -n : n;  

}  


转自: http://blog.csdn.net/njnu_mjn/article/details/9099405

0 0
原创粉丝点击