把字符串转换成整数

把字符串转换成整数

题目来源:
http://blog.163.com/prevBlogPerma.do?host=zhedahht&srl=25411174200731139971&mode=prev

#include < stdio.h >
#include
< stdlib.h >

#include
< string .h >
#include
< limits.h >
/*
 * #define INT_MAX 2147483647   
 * #define INT_MIN (-INT_MAX-1) 
 
*/

enum  Status {
    Success,
    Fail
};
enum  Status ret;
int  negative;

int
Str2Int(
const   char   * input)
{
    
long   long  num  =   0 ;
    negative 
=   0 ;
    ret 
=  Fail;
    
if (input  ==  NULL)
        
return  num;

    
const   char   * ptr  =  input;
    
if ( * ptr == ' + '   ||   * ptr == ' - ' ) {
        
if ( * ptr  ==   ' - ' )
            negative 
=   1 ;
        
++ ptr;
    }
    
while ( * ptr) {
        
if ( ! ( * ptr >= ' 0 '   &&   * ptr <= ' 9 ' )) 
            
return  num;

        
if (( ! negative  &&  num > INT_MAX)  ||  (negative  &&  ( - num) < INT_MIN)) 
            
return  num;

        num 
=  num * 10   +  ( * ptr - ' 0 ' );
        
++ ptr;
    }
    ret 
=  Success;
    
return  num;
}

#define  MAX_LEN 101

int
main(
int  argc,  char   ** argv)
{
    
int  result;
    
char  value[MAX_LEN];
    
while (scanf( " %s " , value)  !=  EOF) {
        result 
=  Str2Int(value);
        
if (ret  ==  Success)
            printf(
" %d\n " , negative  ?  ( - result) : result);
        
else
            printf(
" Invalid\n " );
    }

    
return   0 ;
}


你可能感兴趣的:(把字符串转换成整数)