1.什么是atoi函数
atoi函数的主要作用就是把字符串转化成整数
它的函数类型为
int atoi(const char* str)
由此处我们可以知道它的返回值为整数,所以转化后的值不可以超过int的范围
这就是他的最大值和最小值
1.首先该函数会将字符串中的大部分空白字符舍去,从头开始,不断向后检索(按照顺序的),直到找到第一个非空白字符,识别出一个加号或者减号,和后面尽可能多的十进制数字,将其返回一个int类型的数值(注意范围哦)
2.如果这个字符串中
如图所示,当在整数123后面,减号就被忽略,不会被显示
2.模拟函数atoi
我们会遇到很多种情况
1.传一个空字符串-----my_atoi(" ");
2.传一个空指针-----my_atoi("NULL");
3.所传入的的数字超过了int的取值范围
4.传入一个整数加字母的字符串
以上的这些情况会在使用atoi函数的时候报错呢!!!
在模拟实现的过程中我们会用到枚举的新知识关于枚举的知识可以点开看看
在实现函数的过程中我们要一次解决上面的情况
#include <assert.h>
#include <stdio.h>
#include <ctype.h>
enum Status
{
VALID,
INVALID
};status=INVALID;//先前我们提到了按顺序检索就可以初始化
int my_atoi( const char* str)
{
//1.空指针
assert(src);
char* p=(char*)str;
long long n=0;
int flag=1;
if(*str=='\0')
{
return 0;
}
while(*p==' ')
{
p++;
}
if(*p=='+')
{
flag=1;
p++;
}
else if(*p=='-')
{
flag=-1;
p++;
}
while(*p)
{
if(isdigit(*p))//isdigit用于检测*p是不是阿拉伯数字0~9
{
n=n*10+flag*(*p-'0');
if(n>INT_MAX)
{
n=INT_MAX;
break;
}
else if(n<INT_MIN)
{
n=INT_MIN;
break;
}
}
else
{
break;
}
p++;
}
if(*p=='0')
{
status=VALID;//赋值
}
return (int) n;
}
int main()
{
char arr[]="12345678";
int m=my_atoi(arr);
if(status==VALID)
{
printf("%d\n",m);
}
else
printf("非法转换:%d\n",m);
return 0;
}
制作不易,希望大家给博主点个关注和赞赞呗😍😍😍😍😍😍😍😍
谢谢大家了