#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <limits.h>
enum State
{
INVALID,//0
VALID//1
};
enum State state=INVALID;
int my_atoi(const char* p)
{
//1.空指针
if (NULL == p)
{
return 0;
}
//2.空字符串
if (*p == '\0')
{
return 0;
}
//3.跳过空白字符
while (isspace(*p))
{
p++;
}
int flag;
if (*p == '+')
{
flag = 1;
p++;
}
else if (*p == '-')
{
flag = -1;
p++;
}
//4.处理数字字符的转换
long long n = 0;
while (isdigit(*p))//判断是否为10进制字符
{
n = n * 10 + (*p - '0') * flag;
if (n > INT_MAX || n < INT_MIN)
{
return 0;
}
p++;
}
if (*p == '\0')
{
state = VALID;
return (int)n;
}
else
{
return (int)n;
}
}
int main()
{
const char* p = "a2341111";
int ret = my_atoi(p);
if (state == VALID)
{
printf("合法:%d", ret);
}
else
{
printf("非法:%d", ret);
}
}
atoi自我实现
最新推荐文章于 2022-07-31 10:04:50 发布