#include <stdio.h>
#include <string.h>
int my_atoi(char* arr)
{
int m = 0;
int flag = 3;
if (arr == NULL)
return 0;
//如果arr是null,直接返回0
while (*arr == ' ')
{
arr++;
//此举目的为跳到第一个非空字符处
}
if (*arr == '-')
{
arr++;
flag = 0;
}
if (*arr == '+')
{
arr++;
flag = 1;
}
//如果第一个字符是+或者-,通过改变flag的值来决定最后结果的正负
if (*arr < 48 || *arr > 57)
return 0;
//如果第一个字符不是数字字符,直接返回0
else
{
while (*arr >= 48 && *arr <= 57)
{
m = m * 10 + (*arr - '0');
/*将数字字符转化为整形的方法:直接把这个字符减去字符0即可。将之前
的m值乘10再加上这个新的数即可获得当前的数字*/
arr++;
}
if (flag == 0)
//如果flag等于0就返回m的相反数
return -m;
else
return m;
}
}
int main()
{
char arr[] = "1245";
int m = my_atoi(arr);
printf("%d", m);
return 0;
}
【C语言】库函数atoi模拟实现
最新推荐文章于 2024-08-14 20:16:41 发布