一、atoi函数使用
功能:将字符串转换为整型数
参数:要转换的字符串的地址
返回值:转换后得到的整形数
头文件:需要包含头文件<stdlib.h>
注意事项:
1、该函数首先会丢弃空白字符,直到找到第一个非空白字符,然后,从这个字符开始,取个可选的初始加号或者减号,后跟尽可能多的十进制数字,并将他们返回一个int类型的数值。
2、字符串可以在构成整数的字符之后包含其他字符,这些字符将被忽略,并且对此函数的行为没有影响。
3、如果str中的第一个非空白字符不是有效的整数,或者由于str为空或仅包含空白字符,则不执行转换并返回零。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ret = atoi("-12sfdfdsf");
printf("%d\n", ret);
}
输出结果:
二、atoi函数模拟
模拟代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
#include <limits.h>
int my_atoi(const char* str) {
int flag = 1;
long long num=0;
if (!str || !(*str))return 0;
while (isspace(*str)) {
str++;
}
if (*str == '-') {
flag = -1;
str++;
}
while (isdigit(*str)) {
num = num * 10 + (*str- '0');
if (num<INT_MIN || num>INT_MAX)
{
return 0;
}
str++;
}
num = flag * num;
return num;
}
int main()
{
int ret = my_atoi("-12sfdfdsf");
printf("%d\n", ret);
}
我们来测试几种特殊情况:
情况一:字符串指针为空,字符串为空。
情况二:字符串中没有数字。
情况三:数字过大或者过小。
情况四:正常的数字(加字符)
结果都是正确的~
本次关于atoi函数的分享到此结束,喜欢的话记得点赞收藏加关注哦!