#include<stdio.h>
#include<cctype>
int StrtoDecInt(const char* str){
static const int MAX = (int)((unsigned)~0>>1);
static const int MIN = -(int)((unsigned)~0 >> 1) - 1;
unsigned int n = 0;
int sign = 1;
unsigned int c;
while (isspace(*str))
++str;
if( *str == '-' || *str == '+'){
if(*str == '-')
sign = -1;
++str;
}
while(isdigit(*str)){
c=*str-'0';
if(sign >0 && (n > MAX/10 || (n == MAX/10 && c > MAX % 10))){
n = MAX;
break;
}else if (sign < 0 && (n > (unsigned) MIN/10 || (n== (unsigned) MIN/10 && c > (unsigned) MIN % 10))){
n = MIN;
break;
}
n = n*10 +c;
++str;
}
return sign > 0 ? n:-n;
}
int main(){
const char* numstr="331";
int num = StrtoDecInt(numstr);
printf("number is : %d\n", num);
return 0;
}
Wednesday, October 2, 2013
Interview Question: Convert a numeric string to an integer
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment