stoi家族函数详解

atoi家族函数详解

  • 1.atoi函数
    • 1.1函数原型
    • 1.2函数使用
    • 1.3函数使用的注意事项
    • 1.4atoi函数的模拟实现
  • 2.其它函数

atoi函数家族中包含atof、atol、_atoi64
他们的作用为将字符串转换成double(atof)、integer(atoi、_atoi64)、long(atol)
他们都被包含在头文件<stdlib.h>中
下面我们来详细阐述他们的作用

1.atoi函数

1.1函数原型

int atoi( const char *string );

函数参数:是一个以null结尾的字符串的指针
函数返回值:返回的是一个转换过后的整数

1.2函数使用

函数的使用较为简单

//atoi函数
#include <stdlib.h>//函数使用包含头文件int main()
{char arr[] ="-1234";int ret = atoi(arr);printf("%d", ret);return 0;
}

1.3函数使用的注意事项

1.函数首先会将从起始地址开始后连续的空格忽略,读取空格后有数字的地方,如果是数字中也含有空格,则停止读取,返回已读取的内容
2.如果存在-/+,如果符号在数值位之前,也就是-123,那么直接读取即可,如果符号在数值位中,也就是1-23或123-,则对应得,只读取1或123,也就是说,符号的检测只发生在数值位读取之前,在读取数值位时。如果读取的不是正确的数值的话,会停止读取
3.如果字符串中第一个非空字符不是有效的整数,或是传入空指针,或传入空值,则不执行任何转换,并返回0

1.4atoi函数的模拟实现

//atoi函数的模拟实现
#include <ctype.h>//使用了字符分类函数,包含头文件
//isspace:如果参数为空白字符就返回真
//isdigit:如果参数为十进制字符就返回真int Myatoi(const char* pa)
{//如果传入空指针或空字符,直接返回0if (*pa == '\0' || *pa == NULL)return 0;//首先要清理空格while (isspace(*pa))pa++;int ret = 0;//存储返回值int type = 1;//定义正负号,用type乘以一个数,type只能表示1和-1//判断正负号if (*pa == '+')pa++;else if (*pa == '-'){type = -1;pa++;}//计算值while (isdigit(*pa)){ret = ret * 10 + (*pa - '0') * type;pa++;}return ret;
}int main()
{char arr[] = "NULL";int ret1 = atoi(arr);printf("ret1 = %d\n", ret1);int ret2 = Myatoi(arr);printf("ret2 = %d\n", ret2);return 0;
}

2.其它函数

stoi函数家族的其它函数与atoi函数相同,具体·用法参考atoi函数即可
但是要注意一些区别:

1.stoi和stol都用于整形转换,但是atol可以处理更大的数值范围
2.注意返回类型
3._atoi64用于在32位机器上处理64位整数,但是对于64位整数,建议使用atoll,返回long long类型,因为long long类型是C99标准定义的64位整数类型,而_int64类型只是特定编译器的拓展

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka连接zookeeper失败导致无法启动

1.背景 Linux服务器磁盘使用率100%导致kafka服务挂掉&#xff0c;推测是别的生产者往kafka服务器不停的塞数据把服务器塞爆了&#xff0c;服务器总空间60g&#xff0c;然后进到服务器查看kafka默认数据存储路径/tmp/kafka_logs就占了37g特别是目标topic&#xff0c;由于这个ka…

vscode+docker搭建迷你开发环境。制作docker镜像,并通过vscode连接后进行开发

制作自己的docker镜像&#xff0c;将docker镜像作为服务器&#xff0c;接受vscode连接 目录 1. 制作开发环境镜像 1.1 选择基础镜像 1.2 编写dockerfile 1.3 构建镜像 2. 启动镜像 3. 添加用户 3.1 查看物理机上用户信息 3.2 登录到docker中 3.3 按照物理机的用户和组…

YOLO训练报错解决:OSError: [WinError 1455] 页面文件太小,无法完成操作

问题&#xff1a;OSError: [WinError 1455] 页面文件太小&#xff0c;无法完成操作。 Error loading "C:\Users\12706.conda\envs\yolov8\lib\site-packages\torch\lib\cudnn_cnn_infer64_8.dll" or one of its dependencies. 解决方法&#xff1a; 降低数据加载的线…

sqlalchemy连接池满了报错

报错信息 sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30 (Background on this error at: http://sqlalche.me/e/3o7r) 解决办法 参考&#xff1a;https://docs.sqlalchemy.org/en/20/core/pooling.html 在…

掌握Adobe XD:为自学者准备的软件学习秘籍

相信了解一些设计软件的朋友都听说过这个软件&#xff0c;Adobe XD软件是一款功能强大的原型创建工具。随着Adobe XD软件越来越受到用户的青睐&#xff0c;它几乎涵盖了所有大中小企业和企业的设计&#xff0c;可以说是设计公司最常用的软件之一。Adobe XD软件可以在很多方面满…

Jenkins常用插件与应用详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Jenkins是一个平台我们通过安装插件来解决我们想要完成的任务 1、Jenkins常用插件 Allure&#…

【Kotlin 二】函数/高阶函数/内联函数 对象/主构造函数/次要构造函数/对象初始化

1.函数 函数声明如下&#xff1a; fun 函数名称([函数参数...]): 返回值类型{// 方法体 }fun sum(num1: Int, num2: Int): Int {return num1 num2 }注意&#xff1a;Kotlin函数返回值为空时为Unit&#xff0c;并非常见的void 函数可以设置默认值&#xff1a; fun printNum…

【量算分析工具-水平距离】GeoServer改造Springboot番外系列四

【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客 【量算分析工具-水平距离】GeoServer改造Springboot番外系列四-CSDN博客 【量算分析工具-水平面积】GeoServer改造Springboot番外系列五-CSDN博客 【量算分析工具-方位角】GeoServer改造Springboot番外系列…

常用图像分类预训练模型大小及准确度比较

近年来&#xff0c;深度学习技术的发展使得图像分类任务变得越来越容易。预训练模型的出现更是使得图像分类任务变得更加简单和高效。然而&#xff0c;随着预训练模型的数量和大小的增加&#xff0c;我们需要了解每个模型的特点和优缺点&#xff0c;以便更好地选择和使用它们。…

6岁开始学习打字,10岁学懂文字编程

​你们有没有想过打字速度会影响Coding 编程能力&#xff1f; 疫情期间&#xff0c;全国中小学均不定期停止面授课程&#xff0c;改为网上教学。顷刻之间&#xff0c;电脑、智能手机等即时通讯软件成为每日学习的「良师益友」&#xff0c;常伴左右。 同时&#xff0c;学生也由…

实施阶段(2024年5月)

本次探究主要围绕数学问题“斐波拉契数列”项目展开&#xff0c;在一题两解的算法设计过程中&#xff0c;对比经典算法中的迭代和递归&#xff0c;深入解析两者的关系&#xff0c;并在此基础上进行其他数学问题的深入研究。 &#xff08;1&#xff09;迭代法也称为辗转法&…

http和https分别是什么?区别是什么?

HTTP和HTTPS是两种常见的网络协议&#xff0c;用于在Web上进行数据传输。以下是它们的简要解释和主要区别&#xff1a; HTTP&#xff08;Hypertext Transfer Protocol&#xff09; HTTP是一种应用层协议&#xff0c;用于在Web上传输数据。它是互联网上应用最为广泛的一种网络…

20212313 2023-2024-2 《移动平台开发与实践》第5次作业

20212313 2023-2024-2 《移动平台开发与实践》第5次作业 1.实验内容 设计并开发一个地图应用系统。 该实验需提前申请百度API Key&#xff0c;调用接口实现百度地图的定位功能、地图添加覆盖物和显示文本信息。 2.实验过程 2.1 获取SHA1 &#xff08;1&#xff09;打开控制台…

PostgreSQL数据库提权

前面讲述了mysql、SqlServer、Redis数据库相关的提权方式&#xff0c;有兴趣的也可以去看看。 这里讲的postgreSQL数据库提权就是任意命令执行漏洞(CVE-2019-9193)。 目录 数据库简介 漏洞原理 影响版本 漏洞利用 利用前提 漏洞复现 复现准备 复现过程 漏洞修复 数据…

三分钟轻松搞定内容,2024视频号最新AI自动生成影视解说,,百分之百过原创, 月入1万+

在这个数字时代&#xff0c;我们有幸见证了AI技术对创新的推动。现如今&#xff0c;一个崭新的平台出现了&#xff0c;它能让你用AI软件在短短3分钟内制作完成一段影视解说&#xff0c;而且由于这个平台尚属于新兴&#xff0c;竞争者稀少&#xff0c;提供了一个广阔的机遇天地。…

Mysqldump备份与恢复Mysql全部数据库的数据

博主使用docker安装的mysql&#xff0c;现在需要迁移全部的mysql数据库&#xff0c;使用其他工具时&#xff0c;可能导致接口不通&#xff08;mysql8.4与mysql8.0就不通&#xff09;&#xff0c;使用mysqldump原生工具进行迁移&#xff1a; 全部数据库的数据备份 mysqldump -…

爬虫利器Frida RPC入门——夜神模拟器环境篇

Frida是一款轻量级HOOK框架&#xff0c;可用于多平台上&#xff0c;例如android、windows、ios等。 frida分为两部分&#xff0c;服务端运行在目标机上&#xff0c;通过注入进程的方式来实现劫持应用函数&#xff0c;另一部分运行在系统机器上。frida上层接口支持js、python、…

【MySQL数据库】存储过程实战——图书借阅系统

图书借阅归还 借阅不用count判断&#xff0c;归还不用具体字段值判断 每次借阅或者归还只能操作1本 数据准备 -- 创建数据库 create database db_test3 CHARACTER SET utf8 COLLATE utf8_general_ci; -- 使用数据库 use db_test3; -- 创建图书信息表&#xff1a; create tabl…

鸿蒙高级题库

判断题 1、云函数打包完成后&#xff0c;需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用 &#xff08;错&#xff09; 2、在column和Row容器组件中&#xff0c;aligntems用于设置子组件在主轴方向上的对齐格式&#xff0c;justifycontent用于设置子组件在交…

帆软生成csv文件

帆软官网提供了导出csv文件的插件&#xff0c;需要下载指定版本的插件 请选择具体的详情点击官网介绍&#xff1a;文档介绍 插件地址&#xff1a;插件地址