int parseInt( const char* str){ static const int MAX_INT = (int)( (unsigned)~0>>1); static const int MIN_INT = -(int)( (unsigned)~0>>1)-1; unsigned int n = 0; if( *str==0x00) return 0; //isNULL while( isspace(*str)) ++str; //isSpace int flag = 1; if( *str=='+' || *str=='-') { //sign bit if( *str=='-') flag=-1; ++str; } while( isdigit(*str)){ int cur = *str-'0'; if( flag>0 && (n>MAX_INT/10 || (n==MAX_INT/10 && c>MAX_INT%10)) ) { n=MAX_INT; break; } else if( flag<0 && (n>(unsigned)MIN_INT/10 || (n==(unsigned)MIN_INT/10 && c>(unsigned)MAX_INT%10)) ) { n=MIN_INT; break; } n=n*10+c; ++str; } return flag>0?n:-n; }