#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//atoi实现:将一个字符串转换为对应的整数
enum Status //定义两个枚举常量判断所给变量是否合法
{
kValid = 0,
kInvalid
};
int g_nStatus = kValid; //定义全局变量判断是否出现非法变量
int StrtoInt(const char* str) //考虑可能出现的几种异常情况
{
g_nStatus = kInvalid;
long long num=0;
if(str != NULL && *str != '\0') //考虑空指针和空字符串的情况
{
bool minus = false;
if(*str == '+') //正数的情况
{
str++;
}
else if(*str == '-') //负数的情况
{
str++;
minus = true;
}
if(*str != '\0')
{
num = StrToInt(str,minus); //调用具体的转化函数
}
}
return (int)num;
}
long long StrToInt(const char * str,bool minus) //字符串转化为整数的具体实现过程
{
long long num=0;
while(*str != '\0')
{
int flag = minus ? -1 : 1;
if((*str >= '0') && (*str <= '9'))
{
num = num * 10 + flag * (*str - '0'); //正常情况下的转换
if((!minus && num > 0x7FFFFFFF) || //考虑超出数的范围的情况
(minus && num < (signed int)0x80000000))
{
num = 0;
break;
}
str++;
}
else
{
num = 0;
break;
}
}
if(*str == '\0')
{
g_nStatus = kValid;
}
return num;
}
atoi函数实现的各种考虑因素
最新推荐文章于 2019-07-14 11:44:23 发布