8. String to Integer (整数的溢出)
Implement atoi to convert a string to an integer.
If no valid conversion could be performed, a zero value is returned. If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.
int myAtoi(char* str) { long int ret = 0; char* p = str; bool isPos = true; //get the positive or negative while(*p == ' '){ //neglect space at the beginning p++; continue; } if(*p == '+') p++; else if(*p == '-'){ isPos = false; p++; } //get the digit while(*p != '\0'){ if(*p < '0' || *p > '9') break; //invalid character occurs, stop converting ret = ret*10 + (*p) - '0'; if(ret >= 2147483648) break; //out of int range p++; } if(!isPos) ret = 0-ret; if(ret > INT_MAX) ret = INT_MAX; else if(ret < INT_MIN) ret = INT_MIN; return ret; }