标签:style blog ar color os sp for on div
转换原则:忽略前导空格,从+-或数字开始转换,中间出现非数字break,注意判断乘法加法溢出,大于INT_MAX输出INT_MAX,小于INT_MIN输出INT_MIN
int atoi(const char *str) { if (str==NULL) { return 0; } int ans=0,pos=1,pre; while (*str==‘ ‘|| *str==‘\t‘) ++str; if (*str==‘-‘){ pos=-1; ++str; } else if (*str==‘+‘) { pos=1; ++str; } if (!isdigit(*str)) return 0; ans=(*str-‘0‘)*pos; ++str; for (;*str!=‘\0‘;++str){ if (isdigit(*str)){ pre=ans; if (pos==1&&pre>INT_MAX/10){ ans=INT_MAX; break; } if (pos==-1&&pre<INT_MIN/10){ ans=INT_MIN; break; } pre=ans*10; ans=ans*10+(*str-‘0‘)*pos; if (pos==1&&ans<pre){ ans=INT_MAX; break; } if (pos==-1&&ans>pre){ ans=INT_MIN; break; } } else break; } return ans; }
标签:style blog ar color os sp for on div
原文地址:http://www.cnblogs.com/mintmy/p/4162430.html