库函数atoi

前言

本文将对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的时候还是得根据实际情况来分析(๑•̀ㅂ•́)و✧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值