将一个整数字符串转换为整型,考虑了非数字字符,正负号以及溢出的情况。
</pre><pre code_snippet_id="404909" snippet_file_name="blog_20140624_3_1248501" name="code" class="cpp">#include <stdio.h>
#include <assert.h>
#include <ctype.h>
#include <math.h>
int StrToInt(char* string)
{
unsigned int number=0;
assert(string);
if(*string=='-'){
++string;
}
while(*string!=0){
if(!isdigit(*string))
return -1;
number=number*10+*string-'0';
string++;
}
return number;
}
int main()
{
char* m_str="-1347483600";
unsigned int m_num;
int flag;
int m_num1;
if(*m_str=='-')
flag=1;
m_num=StrToInt(m_str);
if(flag==1){
if(m_num>(pow(2,31)-1)){
printf("overflow!,error number:-3\n");
return -3;
}
m_num1=m_num;
m_num1=-m_num1;
printf("%d\n",m_num1);
}
else
printf("%u\n",m_num);
return 0;
}