解题思路:
将字符串str中的每个字符通过ascll码转换成对应的数字,定义一个计数器num,每转换一次num*10,再加上当前字符转成的数字。
字符串在转整数的时候要注意特殊情况:当第一个字符为+/-/字母/空格时。
#include<stdio.h>
#include<windows.h>
#include<assert.h>
enum en
{
EROR, //0
OK //1
};
enum en st = EROR;
int paraInt(char *dest)
{
assert(dest);
long long sum = 0; //用sum来保存得到的整数
int flag = 1;
if (*dest == '+') //第一个字符为+的情况
dest ++;
if (*dest == '-') //第一个字符为-的情况
{
flag = -flag;
dest++;
}
if (isspace(*dest)) //第一个字符是空格的情况
{
dest++;
}
while (isdigit(*dest)){ //判断字符串中是否有数字,有时为ture
if (*dest >= '0'&&*dest <= '9')
sum = sum * 10 +flag*(*dest- '0');
if (sum<INT_MAX&&sum>INT_MIN) //INT_MAX整数int型最大值,INT_MINint型最小值
sum = (int)sum;
st = OK;
dest++;
}
return sum;
}
int main(){
char str[] = " 1236666644";
int ret = paraInt(str);
if (st) //当st为OK的时候输出
{
printf("%d\n", ret);
}
system("pause");
return 0;
}