1.简介atoi函数
![](https://i-blog.csdnimg.cn/blog_migrate/4b708d661c4d57c044928fac00dab1a5.png)
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函数完全一致,证明了模拟函数的有效性。
感谢观看,若有错误请批评指出