#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<limits.h>
#include<assert.h>
#include<ctype.h>
//模拟实现atoi
//空指针
//空字符串
//非数字字符
//前面有空白字符
//前面有+-
//溢出
enum status
{
voild,
invoild
}status = invoild;
int my_atoi(char* str)
{
long long ret = 0;
assert(str);//空指针
int flag = 1;//默认符号为正号
if (*str == '\0')//判断空字符
return 0;
while (isspace(*str))//判断空格
str++;
if (*str == '+')
{
flag = 1;
str++;
}
if (*str == '-')
{
flag = -1;
str++;
}
while (*str != '\0')
{
if (isdigit(*str))
{
ret = ret * 10 + flag * (*str - '0');
str++;
if (ret > INT_MAX)
{
ret = INT_MAX;
return ret;
}
else if (ret < INT_MIN)
{
ret = INT_MIN;
return ret;
}
}
else
{
break;
}
}
if (*str == '\0')
status = voild;
return (int)ret;
}
int main()
{
char arr[20] = " -123a45";
int ret = my_atoi(arr);
if (status == voild)
printf("正常转化:%d\n", ret);
else
printf("非法转化:%d\n", ret);
return 0;
}
模拟实现atoi字符串转整型
最新推荐文章于 2024-07-19 14:27:26 发布