前言
本文将对atoi函数的功能作讲解
atoi函数的介绍
atoi的功能是将字符串转换为整数,
char arr[] = "5200";
将"5200" -> 5200(int)
将字符串转换为整数:解析将其内容解释为整数的 C 字符串, 该整数作为类型的值返回。
该函数首先根据需要丢弃尽可能多的空格字符(如' ') , 直到找到第一个非空格字符。然后,从此字符开始, 取一个可选的首字母加号或减号, 后跟尽可能多的 10 进制数字, 并将它们解释为数值。
字符串可以在构成整数的字符之后包含其他字符, 这些字符将被忽略, 并且对此函数的行为没有影响。
如果中的第一个非空格字符序列不是有效的整数, 或者由于为空或仅包含空格字符而不存在此类序列,则不执行转换并返回零。
如果字符串从开头就有连续的空格字符,则跳过这些连续的空格字符,找到不是空格的字符。
atoi函数的使用
根据上面的介绍,就可以顺利地使用了atoi函数
例如:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[] = "";
char b[] = " ";
char c[] = "55555";
char d[] = " @qq.3988";
char e[] = " 536@364.com";
char f[] = "314.haha";
char g[] = "wyy love kqy";
printf("%d\n", atoi(a));
printf("%d\n", atoi(b));
printf("%d\n", atoi(c));
printf("%d\n", atoi(d));
printf("%d\n", atoi(e));
printf("%d\n", atoi(f));
printf("%d\n", atoi(g));
return 0;
}
atoi函数的模拟实现
#include <stdio.h>
#include <assert.h>
int my_atoi(const char* str)
{
assert(str);
const char* tmp = str;
while (*tmp == ' ') // 跳过空格字符
tmp++;
int num = 0; // 转换数字字符值的接收变量
// 如果是数字字符,就进来,到不是数字或者'\0'就停止
while (*tmp <= 57 && *tmp >= 48) //数字ASCLL码值范围为48—57
{
num = num * 10 + (*tmp - '0');
if (*(tmp + 1) < 48 || *(tmp + 1) > 57)
{
return num;
}
tmp++;
}
// 如果开始判断的字符不是数字字符,前面的循环不会进去,这里返回0
return 0;
}
int main()
{
char a[] = "";
char b[] = " ";
char c[] = "55555";
char d[] = " @qq.3988";
char e[] = " 536@364.com";
char f[] = "314.haha";
char g[] = "wyy love kqy";
printf("%d\n", my_atoi(a));
printf("%d\n", my_atoi(b));
printf("%d\n", my_atoi(c));
printf("%d\n", my_atoi(d));
printf("%d\n", my_atoi(e));
printf("%d\n", my_atoi(f));
printf("%d\n", my_atoi(g));
return 0;
}
介绍到这,相信你或多或少已经会大概怎么用atoi函数了,也可能会感觉到atoi的局限性,所以使用atoi的时候还是得根据实际情况来分析(๑•̀ㅂ•́)و✧