考虑到越界、非数字字符、符号等因素
#include <stdio.h>
#include <math.h>
int strToInt(const char* str)
{
int temp = 0;
const char* ptr = str;
if(str[0] == '+' || str[0] == '-')//判断正负
str++;
if(*str == '0')//第一个数字不能为0
return 0;
while (*str != 0)
{
if ((*str < '0') || (*str > '9'))
{
break;
}
temp = temp*10 + (*str - '0');
if(temp < 0)//判断int值越界的标准是:看符号是否变化
break;
str++;
}
if (*ptr =='-')//加上符号值
{
temp = -temp;
}
return temp;
}
int main(int argc, const char * argv[]) {
printf("Hello, World!\n");
int n = 0;
char p[10] = "";
scanf("%s",p);
printf("p = %s",p);
n = strToInt(p);
printf("结果为:%d\n",n);
return 0;
}