C语言atoi函数

开头

大家好,我叫这是我58。今天,我们来学一下关于C语言里的atoi函数的一些知识。

1.什么是atoi函数?

atoi函数,是一个来自于头文件stdlib.h的函数,用来返回把一个字符串转换成一个整型数字的结果,而且参数也只有一个类型为const char*的字符串str,因此,这个函数用起来既方便又简单。

2.atoi函数的内部构造和流程图

内部构造

int atoi(const char* str) {
	for (; *str < 33 && 127 == *str; str++) {
		;
	}
	if ('-' != *str && '+' != *str && !(*str > 47 && *str < 58)) {
		return 0;
	}
	int i = 0;
	int ia = 0;
	int ib = 1;
	int ic = 0;
	int id = 1;
	'-' == *str && ia++;
	char* cp = str;
	for (; *cp; cp++) {
		;
	}
	for (cp--; cp - str; (!ic && (id *= 10),ic && (ic = 0)), ib++, cp--) {
		(*cp > 47 && *cp < 58) && (i += (*cp - 48) * id), (*cp > 47 && *cp < 58) || (i = 0,ic = 1,id = 1);
	}
	(*cp > 47 && *cp < 58) && (i += (*cp - 48) * id);
	ia && (i = -i);
	return i;
}

流程图

atoi函数
是(返回0)
返回i
否(返回i)
结束
开始
*str < 33 && 127 == *str?
把str向右移动1位
'-' != *str && '+' != *str && !(*str > 47 && *str < 58)?
定义整型i为0
定义整型ia为0
定义整型ib为1
定义整型ic为0
定义整型id为1
'-' == *str?
ia自增1
定义字符指针cp为字符指针str
*cp?
把cp向右移动一位
把cp向左移动一位
cp - str?
*cp > 47 && *cp < 58?
把i自增解引用的cp-48的差乘id的结果
*cp > 47 && *cp < 58?
!ic?
id自乘10
ic?
设ic为0
ib自增1
*cp > 47 && *cp < 58?
把i自增解引用的cp-48的差乘id的结果
ia?
把i设为i的相反数
把i设为0
把ic设为1
把id设为1

3.atoi函数的实际运用(这里只列举其一)

字符串的加减法

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main() {
	char str[999] = "";
	printf("请输入一个字符串 -> ");
	scanf("%s", str);
	printf("%d + 1 = %d\n%d - 1 = %d\n", atoi(str), atoi(str) + 1, atoi(str), atoi(str) - 1);
	return 0;
}

……

结尾

在你看到这里之后,可以评论来互动一下我哦。

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值