【C语言】atoi和atof函数的使用

人生应该树立目标,否则你的精力会白白浪费。💓💓💓

目录

 •🌙知识回顾

 🍋知识点一:atoi函数的使用和实现

  • 🌰1.函数介绍

  • 🌰2.代码演示

  • 🌰3.atoi函数的实现

  • 🌰3.扩展

 🍋知识点二:atof函数的使用

  • 🌰1.函数介绍

   • 🌰2.代码演示

  •🌙Conclude结尾


 •🌙知识回顾

亲爱的读者们大家好!💖💖💖,我们今天介绍两个比较简单的函数,也算是对前面几期较难内容的放松,上一篇文章我们详细解析了C语言中动态内存管理的相关知识,包括malloc,calloc,realloc等,希望大家能够掌握并应用~

    

今天这篇文章给大家带来的是C语言中的两个函数,atoi和atof这是两个函数还是会见到的,虽然不是我们很经常使用的函数,但我们也不能放任不管,掉以轻心,也许什么时候就用到了,希望大家好好学习,也希望可以给大家带来帮助。

  

👇👇👇
💘💘💘知识连线时刻(直接点击即可)

  🎉🎉🎉复习回顾🎉🎉🎉

        C语言-动态内存分配

博主主页传送门:愿天垂怜的博客

 🍋知识点一:atoi函数的使用和实现

  • 🌰1.函数介绍

int atoi (const char * str);

🔥功能:

1.解析字符串的内容,将字符串转化成整数

2.atoi的使用需要包含头文件 <stdlib.h>

🔥参数:

str:指针,指向了待转化的字符串

🔥返回值:

转化成功的话,返回转化得到的整数,如果是空字符串或者是跳过空白字符后第一个不是数字字符将返回0,如果转化得到数字超出int的取值范围,则是未定义的行为。

  • 🌰2.代码演示

#include <stdio.h>
#include <stdlib.h>int main()
{printf("%d\n", atoi(" "));printf("%d\n", atoi("	abc"));printf("%d\n", atoi("123"));printf("%d\n", atoi("		123"));printf("%d\n", atoi("		+123"));printf("%d\n", atoi("		-123"));printf("%d\n", atoi("		-123abc"));printf("%d\n", atoi("111111111111111111111111111"));//行为未定义return 0;
}

输出结果:

0
0
123
123
123
-123
-123
2147483647

  • 🌰3.atoi函数的实现

atoi函数的模拟实现可能有些复杂,但一定要理清思路:要先跳过空白字符,再看有无+-,如果有还需考虑最后的符号,用flag记录;同时ret值不能大于最大,也不能小于最小。

int my_atoi(const char* str)
{//跳过空白字符while (isspace(*str))str++;//判断正负符号int flag = 1;if (*str == '+'){str++;}else if (*str == '-'){flag = -1;str++;}//用ret记录值long ret = 0;while (*str != '\0'){//判断是否是数字字符if (isdigit(*str)){//转化为整型,如'1'-'0'=1ret = ret * 10 + (*str - '0') * flag;//最大只能INT_MAX,最小只能INT_MINif (ret > INT_MAX){ret = INT_MAX;}else if (ret < INT_MIN){ret = INT_MIN;}}elsereturn (int)ret;str++;}return (int)ret;
}

  • 🌰3.扩展

其实还有两个函数可以了解一下:

🔥atol:将字符串转换成long类型,转换的范围是比atoi要更大一些。

🔥strtol:将字符串转换成long类型,这个函数更加复杂,可以按照各种进制转换。

可以扩展学习一下。

 🍋知识点二:atof函数的使用

  • 🌰1.函数介绍

double atof(const char* str);

🔥功能:

1.atof函数用于将字符串转换为浮点数(double类型)。

2.它解析字符中的数字部分,并将其转换相应的浮点数表示。

3.该函数在<stdlib.h>头文件中声明。

🔥参数:

str:指针,指向待转换的字符串,它可以包含可选的正负号、整数部分、小数部分和指数部分。

🔥返回值:
atof:函数的返回值类型是double,表示成功转换的浮点数。

   • 🌰2.代码演示

#include <stdio.h>
#include <stdlib.h>int main()
{printf("%lf\n", atof("123.45"));printf("%lf\n", atof("+123.45"));printf("%lf\n", atof("-123.45"));printf("%lf\n", atof("		-123.45"));printf("%lf\n", atof("3.14E-2"));//3.14*10^-2 = 0.0314printf("%lf\n", atof("hehe"));return 0;
}

输出结果:

123.450000
123.450000
-123.450000
-123.450000
0.031400
0.000000

  •🌙Conclude结尾

这篇内容相对简单,但还是希望大家能够熟练应用并掌握它们的基本用法,其中atof的模拟实现较为复杂,因为要考虑科学计数法的情况,大家有兴趣可以自行探讨~

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

springboot + slf4j + log4j2

<!--Web依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifact…

Oracle 执行计划

1.执行计划 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述。 执行计划描述了SQL引擎为执行SQL语句进行的操作&#xff1b;分析SQL语句相关的性能问题或仅仅质疑查询优化器的决定时&#xff0c;必须知道执行计划&#xff1b;所以执行计划常用于sql调优。 2.查…

python学习笔记----异常、模块与包(九)

一、异常 1.1 什么是异常 在Python中&#xff0c;异常是程序执行时发生的错误。当Python检测到一个错误时&#xff0c;它会引发一个异常&#xff0c;这可能是由于多种原因&#xff0c;如尝试除以零、访问不存在的文件&#xff0c;或者尝试从列表中获取不存在的索引等。异常处…

在Centos7上部署LDAP服务

安装ldap和设置自起 - 安装ldap yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openldap openldap-servers-sql- 启动和开机自起 systemctl start slapd systemctl enable slapd- 查看服务是否安装成功 配置ldap - 创建第一个管理账号…

基于MSOGI的交叉对消谐波信号提取网络MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介&#xff1a; 此模型利用二阶广义积分器&#xff08;SOGI&#xff09;对基波电流和相应次的谐波电流进行取 &#xff0c;具体是通过多个基于二阶广义积分器的正交信号发生器 &#xff08; S&#xf…

JAVA面试之MQ

如何保证消息的可靠传输&#xff1f;如果消息丢了怎么办 数据的丢失问题&#xff0c;可能出现在生产者、MQ、消费者中。 &#xff08;1&#xff09;生产者发送消息时丢失&#xff1a; ①生产者发送消息时连接MQ失败 ②生产者发送消息到达MQ后未找到Exchange(交换机) ③生产者发…

按照数组原来的规律将新插入的数组插入(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int temp1 0;int temp2 0;int end 0;int number 0;int a[11] { 1, …

LeetCode 131 —— 分割回文串

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 首先&#xff0c;按照 LeetCode 5——最长回文子串 中的思路&#xff0c;我们先求出 d p dp dp&#xff0c;这样我们就知道了所有的子串是否是回文子串。 然后&#xff0c;我们进行一个 dfs 搜索&#xff0c;起…

Ubuntu系统安装nvfortran详细步骤【笔记】

实践设备&#xff1a;华硕FX-PRO&#xff08;NVIDIA GeForce GTX 960M&#xff09; Ubuntu系统安装NVFORTRAN&#xff08;NVIDIA Fortran Compiler&#xff09;步骤如下&#xff1a; 安装依赖项&#xff1a;在安装NVFORTRAN之前&#xff0c;你需要确保系统已经安装了一些必要…

使用docker安装redis

使用docker安装redis ①拉取镜像 docker pull redis:6.2.6② 创建容器 docker run -d --name forum-redis --restartalways -p 6379:6379 redis:6.2.6 redis-server --requirepass "dong97"③链接测试 打开Redis Desktop Manager&#xff0c;输入host、port、pas…

无法定位程序输入点QTextStream

当您的应用在调试模式下运行正常&#xff0c;但在发布&#xff08;发布构建&#xff09;后出现错误时&#xff0c;可能涉及到以下几个常见的原因&#xff1a; 动态链接库问题&#xff1a;发布构建可能没有包含必要的动态链接库&#xff08;DLL&#xff09;&#xff0c;或者没有…

《与 Apollo 共创生态——Apollo7周年大会干货分享》

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 阿波罗X企业自动驾驶解决方案自动驾驶技术提升与挑战自动驾驶系统功能与性能的详细解析<td alig…

Linux进程——进程的创建(fork的原理)

前言&#xff1a;在上一篇文章中&#xff0c;我们已经会使用getpid/getppid函数来查看pid和ppid,本篇文章会介绍第二种查看进程的方法&#xff0c;以及如何创建子进程&#xff01; 本篇主要内容&#xff1a; 查看进程的第二种方法创建子进程系统调用函数fork 在开始前&#xff…

6.python网络编程

文章目录 1.生产者消费者-生成器版2.生产者消费者--异步版本3.客户端/服务端-多线程版4.IO多路复用TCPServer模型4.1Select4.2Epoll 5.异步IO多路复用TCPServer模型 1.生产者消费者-生成器版 import time# 消费者 def consumer():cnt yieldwhile True:if cnt < 0:# 暂停、…

上班族小张的副业之路:下班后的水牛社赚钱故事

在快节奏的都市生活中&#xff0c;上班族小张每天忙碌于办公室与家庭之间&#xff0c;重复着朝九晚五的生活。然而&#xff0c;他内心总渴望寻找一种既能充实生活&#xff0c;又能增加收入的副业方式。直到有一天&#xff0c;他发现了水牛社——一个为他提供丰富副业资源和机会…

python学习笔记B-17:序列结构之字典--字典的相关操作

字典的常用操作方法和函数如下&#xff1a; d {1:["东方延续","太空军自然选择号舰长","女","33"],2:["章北海","太空军自然选择号政委","男","39"],3:["罗辑","太空军自然…

AI大模型探索之路-训练篇10:大语言模型Transformer库-Tokenizer组件实践

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

compose调用系统分享功能分享图片文件

compose调用系统分享功能图片文件 简介UI界面提供给外部程序的文件访问权限创建FileProvider设置共享文件夹 通用分享工具虚拟机验证结果参考 本系列用于新人安卓基础入门学习笔记&#xff0c;有任何不同的见解欢迎留言 运行环境 jdk17 andriod 34 compose material3 简介 本案…

nginx的前世今生(二)

书接上回&#xff1a; 上回书说到&#xff0c;nginx的前世今生&#xff0c;这回我们继续说 3.缓冲秘籍&#xff0c;洪流控水 Nginx的缓冲区是其处理数据传输和提高性能的关键设计之一&#xff0c;主要用于暂存和管理进出的数据流&#xff0c;以应对不同组件间速度不匹配的问题…

【JVM】class文件格式,JVM加载class文件流程,JVM运行时内存区域,对象分配内存流程

这篇文章本来只是想讲一下class文件格式&#xff0c;讲着讲着越讲越多。JVM这一块吧&#xff0c;知识比较散比较多&#xff0c;如果深研究下去如死扣《深入理解Java虚拟机》&#xff0c;这本书很深很细&#xff0c;全记住是不可能的&#xff0c;其实也没必要。趁这个机会直接把…