目录
学习 atoi 函数
函数的功能:
解析 str 字符串,从 str 字符串的起始位置开始,只要出现了整数字符,就将整数字符转换为整型,并且会忽略空格和字母字符
函数的参数:
const char* str:字符串指针,形参部分需要传递字符串的起始位置,因为知识把字符串翻译成整型,并不会改变字符串的内容,所以可使用 const 修饰
函数的返回值:
将字符串翻译成整数后返回
函数所需的头文件:
#include<stdlib.h>
使用 atoi 函数
代码演示:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int ret = atoi("123");
printf("%d\n", ret);
return 0;
}
代码验证(常规出现整数字符串):
代码验证(带有负号整数字符串):代码验证(带有字母的整型字符串):
代码验证(带有空格的整型字符串):
模拟实现 atoi 函数
代码演示:
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<Ctype.h>
int my_atoi(const char* str)
{
// 断言,确保字符串的有效性
assert(str != NULL);
// 判断是否是空字符串
if (*str == '\0')
return 0;
// 跳过空白字符
while (*str == ' ')
str++;
// 判断第一个符号是否是负号
int flag = 1;
if (*str == '-')
{
flag = -1;
str++;
}
else if (*str == '+')
{
str++;
}
// 将数字字符转换为整型
int ret = 0;
while (*str != '\0')
{
// isdigit函数用来判断是否是数字字符
if (isdigit(*str))
{
ret = ret * 10 + flag * (*str - '0');
// 判断 ret 当前值是否合法
if (ret > INT_MAX || ret < INT_MIN)
{
return 0;
}
}
else
{
// 说明遇到了数字字符以外的字符,直接返回当前ret即可
return ret;
}
str++;
}
return ret;
}