atoi源码

原文: http://blog.csdn.net/eroswang/article/details/5804244


isspace(int x) 

    if(x==' '||x=='/t'||x=='/n'||x=='/f'||x=='/b'||x=='/r') 
        return 1; 
    else  
        return 0; 

 
isdigit(int x) 

    if(x<='9'&&x>='0')          
        return 1;  
    else  
        return 0; 
 

 
int atoi(const char *nptr) 

        int c;              /* current char */ 
        int total;         /* current total */ 
        int sign;           /* if '-', then negative, otherwise positive */ 
 
 
        /* skip whitespace */ 
        while ( isspace((int)(unsigned char)*nptr) ) 
            ++nptr; 
 
 
        c = (int)(unsigned char)*nptr++; 
        sign = c;           /* save sign indication */ 
        if (c == '-' || c == '+') 
            c = (int)(unsigned char)*nptr++;    /* skip sign */ 
 
 
        total = 0; 
        while (isdigit(c)) { 
            total = 10 * total + (c - '0');     /* accumulate digit */ 
            c = (int)(unsigned char)*nptr++;    /* get next char */ 
        } 
 
 
        if (sign == '-') 
            return -total; 
        else 
            return total;   /* return result, negated if necessary */ 

  

猜你喜欢

转载自aircoder.iteye.com/blog/1869420
今日推荐