Strings to int

Str converted to the int

#include<stdio.h>
#include<string>
int err = 0 ;
int str_to_int(char *s){
    long sum= 0;
    bool isPositive = true;
    bool isZeroStart = true;
    bool flag = false;
    char c;
    int maxInt = 0x7fffffff;
    bool flag2 ;
    bool isNumStart = false;

    while(*s != '\0'){
    c = *s;
    flag = (c >='0' && c <='9');

    if(c == '-'){
    if (isNumStart){
       err = 9;
       printf("- is illegal");
       return -1;
    }
        isPositive = false;
    s++;
    }
    else if (c == '0' && isZeroStart){
        isNumStart = true;
        s++;
    
    }
    else if (c == '+'){
    if (isNumStart){
       err = 9;
       printf("+ is illegal");
       return -1;
    }

       if(*(s+1) == '\0' )
       {
          err = 10;
      printf("num is +\n");
      return -1;
       }
        flag2 = (*(s+1) >='0' && *(s+1) <='9');
        if ( !flag2 ){
            err = 11;
        printf("num is ilegal\n");
            return -1; 
       }
       ++s;
    }
   else if(flag){ 
        sum = sum *10+c-'0';
    isNumStart = true;
        if(sum >= maxInt){
       break;
    }
        isZeroStart =  false;
    ++s;
    }
    else {
       err = 11;
       printf("num is ilegal\n");
       return -1;
    
    }

   }
    if (isPositive){
       return sum;
    }
    return -sum;
}

int main(int argc,char *argv[]){

   if(argc != 2){
      printf("input num please\n");    
      return -1;
   }

   char * str = argv[1];
   int num = str_to_int(str);

   if ( err){
      printf("parse str to num is err\n ");
      return -1;
   }
   printf("num = %d\n",num);
   return 0;
}

The program supports +, - at the beginning, the beginning allowed 000

Guess you like

Origin www.cnblogs.com/wanshuafe/p/11546062.html