这是一些c语言的相关单词意思:
简单的来讲就是该函数可以将字符串里面的数字字符转化为整形
打印举例:
反而2 3 4都在说一下特殊案例,
特殊案例就会以举例展示:
特例 1:
include
include
int main()
{
int ret = atoi(" -123");
printf("%d ", ret);
return 0;
}
特例 2:
include
include
int main()
{
int ret = atoi(" 123");
printf("%d ", ret);
return 0;
}
特例 3:
include
include
int main()
{
int ret = atoi(" 123asd");
printf("%d ", ret);
return 0;
}
特例 4:
include
include
int main()
{
int ret = atoi("");//空
printf("%d ", ret);
return 0;
}
特例 5:
include
include
int main()
{
int ret = atoi("NULL");
printf("%d ", ret);
return 0;
}
特例 6:
include
include
int main()
{
int ret = atoi("11111111111111111111111111111111");//33个1,超过了整形int的范围
printf("%d ", ret);
return 0;
}
特例 7:
include
include
int main()
{
int ret = atoi("-11111111111111111111111111111111");//33个1,超过了整形int的范围
printf("%d ", ret);
return 0;
}
那么对应打印信息为:
1:
2:
3:
4:
5:
6:但是在加1还是这个数,因为已经超过了整形范围
7:同6,
了解完后我们就知道了atoi的作用了,为了加深理解在举一个例子:
因为第一个为 ’ ‘,不是有效的整形字符,所以为0;//也就可以说是非法。
atoi的实现
int atoi_my(const char *str)
{
int s=0;
bool falg=false;
while(*str==' ')
{
str++;
}
if(*str=='-'||*str=='+')
{
if(*str=='-')
falg=true;
str++;
}
while(*str>='0'&&*str<='9')
{
s=s*10+*str-'0';
str++;
if(s<0)
{
s=2147483647;
break;
}
}
return s*(falg?-1:1);
}