Write a program to convert string to number without using library function。

来源:互联网 发布:mac开机密码忘了四种 编辑:程序博客网 时间:2024/04/29 19:00

1、问题

/*

Write a program to convert string to number without using library function。

*/


2、算法

#define MAX_LONG 0X7FFFFFFF
long foo(const char* str)
{
        int sign = 1 ;
        long num = 0 ;

        const char* p = str ;

        //假设输入的字符串是合法的
        if ( *p == '-' )
        {
                sign = -1 ;
                p++ ;
        }else if ( *p == '+' )
        {
                sign = 1 ;
                p++ ;
        }

        while(*p)

        {

  // long 取值范围-2147483648~ 2147483647

                if ( (num > LONG_MAX/10) || 
                        (        (num == LONG_MAX/10) && 
                                ( (-1 == sign && *p > '8') || (1 == sign && *p > '7')) ))
                {
                        printf("out of bound") ;
                        return 0 ;
                }

                if ( *p >='0' && *p <='9' )
                {
                        num = num*10 + (*p - '0') ;
                }


                *p++ ;
        }

        printf("%d", num * sign) ;
        return num * sign ;

}

0 0
原创粉丝点击