C语言atoi函数

目录

开头

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

1.什么是atoi函数?

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

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

内部构造

c 复制代码
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函数的实际运用(这里只列举其一)

字符串的加减法

c 复制代码
#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;
}

......

结尾

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

相关推荐
恒森宇电子有限公司1 小时前
IP5326_BZ 支持C同口输入输出的移动电源芯片 2.4A的充放电电流 支持4LED指示灯
c语言·开发语言·单片机
曙曙学编程2 小时前
stm32——NVIC,EXIT
c语言·c++·stm32·单片机·嵌入式硬件
HUST2 小时前
C语言 第三讲:分支和循环(上)
c语言·开发语言
今日待办3 小时前
Arduino Nano33 BLESense Rev2【室内空气质量检测语音识别蓝牙调光台灯】
c语言·单片机·嵌入式硬件·mcu·语音识别·ardunio·arduinonano33
这里没有酒5 小时前
[C语言] 结构体 内存对齐规则 内存大小计算
c语言·开发语言
半夜吃早餐7 小时前
【STM32HAL-----NRF24L01】
c语言·开发语言·stm32·单片机·嵌入式硬件
ShineWinsu9 小时前
对于单链表相关经典算法题:206. 反转链表及876. 链表的中间结点的解析
java·c语言·数据结构·学习·算法·链表·力扣
再睡一夏就好9 小时前
【C++闯关笔记】STL:list 的学习和使用
c语言·数据结构·c++·笔记·算法·学习笔记
学习噢学个屁13 小时前
基于STM32的交通灯设计—紧急模式、可调时间
c语言·stm32·单片机·嵌入式硬件
matlab_xiaowang17 小时前
【2025】Notepad++安装教程保姆级一键安装教程(附安装包)
其他·notepad++