简析atoi函数

1.简介atoi函数

atoi函数的作用是将字符串转化为整型

注意事项:(由官网上翻译而来)

1.解析 C 字符串 str,将其内容解释为整数,该整数以 int 类型的值返回。

该函数首先根据需要丢弃任意数量的空格字符(如在 isspace 中),直到找到第一个非空格字符。然后,从此字符开始,采用可选的初始加号或减号,后跟尽可能多的以 10 为基数的数字,并将它们解释为数值。

2.字符串可以在构成整数的字符之后包含其他字符,这些字符将被忽略,并且对此函数的行为没有影响。

3.如果 str 中第一个非空格字符序列不是有效的整数,或者由于 str 为空指针,或仅包含空格字符而不存在此类序列,则不执行转换并返回零。 

2.atoi函数的模拟实现

按照对这个函数的要求我们可以模拟实现atoi函数,实现代码如下:

#include<stdio.h>


int my_atoi(const char*str)
{
	int arr[100] = { 0 };
	int count = 1;
	int sum = 0;
	int tmp = 1;
	//空指针情况排除
	if (str == NULL)
	{
		return 0;
	}

	//跳过空白字符
	while (*str == ' ')
	{
		str++;
	}

	//排除第一个非空白字符不是数字的情况
	if (*str > '9' && *str < '0')
	{
		return 0;
	}

	//正式接收字符串
	while (*str <= '9' && *str >= '0')
	{
		arr[count] = *str - '0';
		count++;
		str++;
	}

	//计算要返回的整型值
	for (int j=count;j>=1;j--)
	{
		sum += arr[j] * tmp;
		tmp *= 10;
	}
	sum /= 10;
	return sum;
}


int main()
{
	int ret1 = atoi("  3479s23n");
	int ret2=my_atoi("  3479s23n");
	printf("%d\n",ret1);
	printf("%d\n", ret2);
	return 0;
}

这代码输出结果如下:

为了避免代码的偶然性,我们多测试几个用例:

在多组数据下测试结果模拟函数的执行结果与atoi函数完全一致,证明了模拟函数的有效性。


感谢观看,若有错误请批评指出

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值