关于atoi函数的介绍和模拟(详细版)----求赞的博主

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;
 }
 

制作不易,希望大家给博主点个关注和赞赞呗😍😍😍😍😍😍😍😍
请添加图片描述
谢谢大家了

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值