一 功能
转换。将字符类型的数字转换成整数类型的数字
二 声明与定义
int atoi (const char * str);
需要传入一个字符类型的指针,会返回int类型的值
三 特别注意的问题
1 如果传入的字符指针是空指针怎么办?-》assert
2 如果传入的字符串是空字符串怎么办?-》返回0
3 如果传入的字符串有空格怎么办?-》isspace判断,空格就跳过
4 如果传入的字符串有其他非数字类型的字符:比如字母怎么办?-》返回0
5 如何处理正负号? -》定义一个flag,根据正负号赋值
四 函数的实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<ctype.h>
int my_atoi(const char* str)
{
assert(str);
int flag = 1;
long long n = 0;
if (*str == '\0')
{
return 0;
}
while (isspace(*str))
{
str++;
}
if (*str == '-')
{
flag = -1;
str++;
}
while (*str != '\0')
{
if (isdigit(*str))
{
n = n * 10 + *str - '0';
}
else
{
n = 0;
break;
}
str++;
}
n = flag * n;
return (int)n;
}
int main()
{
char arr1[20] = "123456789";
printf("%d\n", my_atoi(arr1));
char arr2[20] = " 123456789";
printf("%d\n", my_atoi(arr2));
char arr3[20] = "a123456789";
printf("%d\n", my_atoi(arr3));
char arr4[20] = "-123456789";
printf("%d\n", my_atoi(arr4));
}