文章目录
- 一、atoi函数的定义
- 二、atoi函数的使用
- 三、atoi函数的实现
一、atoi函数的定义
int atoi(const char* string)
库函数包含头文件<stdlib.h>
将字符串中的数字字符转换为int
类型并返回
- 空字符返回0
- 数字字符前有空白字符跳过
- 数字字符前有+、-字符做整数的正、负处理
- 数字字符前有其他字符返回0
二、atoi函数的使用
#include<stdio.h>
#include<stdlib.h>
int main()
{
char arr1[] = "-21abv";
char arr2[] = " -1234";
char arr3[] = "abc123";
char arr4[] = "";
printf("%d\n",atoi(arr1));
printf("%d\n",atoi(arr2));
printf("%d\n",atoi(arr3));
printf("%d\n",atoi(arr4));
return 0;
}
运行结果:
-21
-1234
0
0
三、atoi函数的实现
#include<stdio.h>
#include<assert.h>
#include<ctype.h>
enum state
{
VALID,
UNVALID
};
enum state status = UNVALID;
int my_atoi(char* str)
{
//1.空指针
assert(str);
//2.空字符串
if (*str == '\0')
return 0;
//3.空白字符(跳过)
while (*str == ' ')
{
str++;
}
//4.+-
int flag = 1;
if (*str == '+')
{
str++;
}
else if (*str == '-')
{
flag = -1;
str++;
}
long long n = 0;
while (isdigit(*str))
{
n = n * 10 + flag*(*str - '0');
//越界的值
if (n > INT_MAX || n < INT_MIN)
return 0;
str++;
}
if (*str == '\0')
{
status = VALID;
return (int)n;
}
return (int)n;
}
int main()
{
char arr1[] = "-21abv";
char arr2[] = " -1234";
char arr3[] = "abc123";
char arr4[] = "";
printf("%d\n",my_atoi(arr1));
printf("%d\n",my_atoi(arr2));
printf("%d\n",my_atoi(arr3));
printf("%d\n",my_atoi(arr4));
return 0;
}
运行结果:
-21
-1234
0
0
更多推荐
atoi函数的使用和实现
发布评论