atoi函数的模拟实现
文章目录
- atoi函数:
- 模拟实现:
atoi函数:
函数原型:
包含在在头文件<stdlib.h>中
该函数的的作用是把字符串中的数字字符转化为数字。
例如:
模拟实现:
首先我们要考虑以下几种情况:
1.传入的是空指针 my_atoi(NULL);
2.传入的是空字符 my_atoi("");
3.传入的数字前面有空字符 my_atoi(" 1234");
4.传入的数字加上了±号 my_atoi(" -1234");
5.传入的字符串中有非数字字符 my_atoi(" +1234abc");
6.传入的数字太大,溢出了 my_atoi(" 123423425436512344566");
当传入空字符时,我们返回0.但无法区分是传入空字符这样的异常情况返回的0还是传入字符0返回的数字0.所以我们首先用枚举,设置刚开始的状态为异常状态,最后写正常情况时,再让state值为VALID。
enum State
{VALID, //正常INVALID //非法
};
enum State state = INVALID;
int my_atoi(const char* str)
{//空指针assert(str);//str指向空字符if (*str == '\0')return 0;//跳过空白字符while (isspace(*str)){str++;}//识别正负数int flag = 1;if (*str == '+'){str++;}else if (*str == '-'){flag = -1;str++;}int ret = 0;while (*str){if (isdigit(*str)){ret = ret * 10 + flag * (*str - '0');str++;}else{state = VALID;return ret;//合法}}state = VALID;return ret;
}int main()
{char arr[] = "-1234";int ret = my_atoi(arr);printf("%d", ret);return 0;
}
这里使用了isspace函数和isdigit函数,分别判断传入的是否含有空格,以及是否是数字字符。如果是空格和数字字符,将会返回一个非零数值。
如何将字符数字转换为数字?
例如字符1的ascii码值为49,字符0的ascii码值为48.
‘1’-‘0’=1 ;即可得出数字1.
然后:ret = ret * 10 + flag * (*str - '0');
即可将一串数字字符转换为数字。
运行结果:
atoi函数的模拟实现相关推荐
- 详解 atoi 函数并模拟实现
目录 一.函数说明 二.返回值 三.模拟实现 函数原型: int atoi(const char* str); 所属头文件:stdlib.h 一.函数说明 将字符串转换为整数(Convert stri ...
- C语言模拟实现:atoi函数
在实现atoi之前我们先来了解一下atoi函数的作用是什么: 目录 1.实例演示 2.模拟实现 2.1 判断是否为空指针 2.2判断是否为空字符串 2.3判断正负号 2.4判断非数字字符 2.5判断是 ...
- atoi函数的介绍和模拟实现
今天我来介绍atoi函数和模拟实现atoi函数. 目录 atoi和与其功能相似的函数的介绍 atoi函数的模拟实现 atoi和与其功能相似的函数的介绍 atoi函数是一个将字符串转换为整数值的函数. ...
- 【C语言】atoi函数的功能和模拟实现
快速导航 1.atoi函数的功能 2.atoi函数的模拟实现 2.1初步模拟实现 2.2atoi函数的具体实现(考虑6种特殊情况) 1.atoi函数的功能 atoi函数功能是将数字字符串转换为整数: ...
- 【atoi函数的介绍以及模拟实现】
目录 前言 一.atoi函数测试 1. 要求 2. 测试 二.atoi函数模拟实现 三.补充 前言 位置: atoi函数包含在<stdlib.h>头文件中 作用: 将字符串转换为整形数据返 ...
- 模拟实现atoi函数
atoi函数原型为:int atoi( constchar *string ); 其功能是将一个数字字符串转换成int类型的整数,若数字前有空格,可以跳过空格. 模拟实现此函数,初看之下,觉得此题简单 ...
- atoi函数和itoa函数以及模拟使用
1.atoi函数 atoi函数的作用是把一个字符串换成一个整型数据,该函数包含于头文件#include<stdlib.h>中. 1.空字符返回数字0: 2.数字字符前有空白 ...
- 【C语言】模拟实现atoi函数
目录 前言 一.atoi()函数 二.模拟实现atoi 1.普通情况 2.空指针 3.前面有一大堆空格 4.字符串长度为0 5.整型溢出 6.含有其它类型数据 7.具体实现 前言 今天我们来模拟实现a ...
- atoi函数功能以及模拟实现
目录 一,atoi函数的基本功能 1.1基本功能 1.2功能实现 二,模拟实现 2.1实现过程 2.2完整代码 一,atoi函数的基本功能 1.1基本功能 基本格式:int atoi(const ch ...
最新文章
- 互联网体系结构(网络基础).教案
- 编写微指令 计算机组成,计算机组成原理微指令实验报告
- mysql练习题——数据分析/大数据岗面试
- JavaScript 下载大文件解决方案(Blob+OjbectURL)
- python基础知识资料-python基础知识整理(值得收藏)
- 第21节 信息系统及其建设
- 解决在使用 Qt 编译项目时出现 “C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode格式以防止数据丢失“ 的警告
- 腾讯爬虫python_Python爬虫,爬取腾讯漫画实战
- USACO - 3.1.6 - Stamps
- oracle性能优化求生指南_Vue项目性能优化--实践指南,网上最全最详细
- 【react eslint】解决react-hooks/exhaustive-deps eslint报错问题
- 华为员工待遇全面揭秘
- notempty注解属于哪个依赖_@NotEmpty、@NotNull、@NotBlank注解解析
- MAC——本机域名[localhost]配置
- 2018,灵魂无处安放的一年
- 重庆公厕装免费WiFi 网速达50M
- EditText属性大全
- 【板栗糖GIS】为什么内网穿透过的地址出现Tunnel not found
- Jetson Nano非GUI界面自动登录设置(CLI命令行自动登录)
- 传奇Newoupui-pak配置失败怎么处理?