ATOI
int atoi(const char* p);
将C字符串转化为基数为10的整数的函数。在第一个非空字符开始转化。
参数
需要转换的字符串
返回值
转成好的整数,如果转换完超出了int可以的范围,则会返回int表示的最大值。
注意事项:
1、字符串为空字符串;
2、p为空;
3、‘+’,‘-’号的选择;
4、返回的值超过了int的范围;
代码实现
#include<stdio.h>
#include<assert.h>
#include<ctype.h>
#include<limits.h>
int Atoi(char* p)
{
int flag = 1;
long long num = 0;
assert(p);
if (p == NULL)
{
return 0;
}
if (*p == '\0')
{
return 0;
}
while (isspace(*p))
{
p++;
}
if (*p == '-')
{
flag = -1;
p++;
}
//else if (*p = '+')
//{
// p++;
//}
while (*p)
{
if (isdigit(*p))
{
num = num*10 + flag*(*p - '0');
if (num > INT_MAX)
{
return INT_MAX;
break;
}
else if (num < INT_MIN)
{
return INT_MIN;
break;
}
}
else
{
return num;
}
p++;
}
return num;
}