模拟实现atoi

本文介绍了C语言中的atoi函数,用于将字符串转换为整数。文章详细讲解了atoi的工作原理,并提供了自己编写的模拟atoi函数的代码实现,包括跳过空格、处理正负号以及检查数值范围等功能。通过这段代码,读者可以更好地理解atoi函数的内部逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

一、aoti

作用:将字符串转换成整数
头文件:<stdlib.h>
定义函数: int atoi(const char *nptr)
其他相关函数:atof(字符串转浮点数),atol(将字符串转换成长整型数)等。

二、模拟aoti

函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。我们模拟时按照以上要求模拟即可。
直接上代码

enum
{
	INVALID,
	VALID
};
enum State status = INVALID;
int My_aoti(const char* arr)
{
	char* str = arr;
	int flag = 1;
	long long n = 0;//处理当数据大小超过INT_MAX
	assert(str);//防止str为空指针
	while (isspace(*str))//跳过空格
	{
		str++;
	}
	if (*str == '-')
	{
		flag = -1;
		(*str)++;
	}
	else if(*str =='+')
	{
		(*str)++;
	}
	while (isdigit(*str))
	{
		n = n * 10 + flag * (*str - '0');
		if (n > INT_MAX || n < INT_MIN)//当数据大小超过INT_MAX,进行停止
		{
			return 0;
		}
		str++;
	}
	return (int)n;
}

总结

以上就是atoi的简单模拟希望对大家有帮助!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1无名之辈1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值