C语言 | atoi函数使用及其模拟实现

一、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函数的分享到此结束,喜欢的话记得点赞收藏加关注哦!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值