atoi函数

atoi函数原型

int atoi (const char * str);

这个函数的作用是将str所指向的字符串进行解析得到一个整形的数据,在将其作为返回值。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char str[10] = "123";
	int i = atoi(str);
	printf("%d\n",i);
}

打印结果是123 

这个函数讲“123”这样的字符串转化为了123.也就是将字符串中的整数提取出来了作为了整形数据进行返回。

这个函数对字符串进行读取的时候,首先会跳过前面的所以空格字符。

	char str[10] = "   123";

找到第一个非空格字符后,以这个字符为起点,对后面的数据进行读取。如果后面又遇到了空格字符就停止,同时遇到斜杠0也会停止。

	char str[10] = " 12  3";

这样就只会打印12,没有3了。

这个字符串中在整数字符的后面是可以包含额外的字符的

	char str[10] = " 123abc";

这样的字符虽然不能转换但是不影响前面的数字进行转化,仍然会打印123.

如果这种非数字的字符串在前面就会解析失败,也就是所想要成功转化,这个字符串中的数字就必须在前面。一旦依次解析的过程中遇到非数字字符(除了第一次对空格字符的解析)就会停止。

返回值:如果解析失败,这个函数就会返回0(字符串中的数字字符是0也会返回0,并不一定失败)。反之就会返回对应的数字。

这个也是可以转化负数的。

	char str[10] = "-123";

atoi函数的模拟实现

#include<stdio.h>
#include<stdlib.h>
int my_atoi(const char* s)
{
	int sign = 1;//正数表示1,负数表示0
	while (isspace(*s)) {//跳过开头的空格字符
		s++;
	}
	if (*s == '-')
	{
		sign = 0;
		s++;
	}
	int result = 0;
	while (isdigit(*s))
	{
		result *= 10;
		result = result + *s - '0';
		s++;
	}
	return sign ? result : -result;
}
int main()
{
	
	int i = my_atoi("-123");
	printf("%d\n",i);
}

如果*s是一个数字字符的话,在减去'0',根据ASCII就可以得到这个数字字符的整数形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值