C语言【atoi函数】
C语言【atoi函数】
- 🫅系统atoi函数
- 🫅 模拟实现atoi函数
看到atoi函数,有人又会问有这个函数,我怎么没用过。那就说明:不是你刷题太少,就是atoi函数存在感太低。
这篇函数就带你领略atoi函数的魅力
🫅系统atoi函数
int atoi(const char *str)
- 参数
str:要转化为整数的字符串 - 返回值
该函数返回转换后的长整数,如果没有执行有效的转换,则返回零 - 头文件
- <stdlib.h>
#include<stdio.h>
#include<stdlib.h>int main()
{printf("%d\n", atoi("abcd"));printf("%d\n", atoi("1234"));return 0;
}//运行结果
*****
0
1234*****
当我们看到 printf(“%d\n”, atoi(“abcd”)) 的结果是 0 的时候,我们有一丝疑问:难道不是根据字符跟整数之间的关系:ascll 码值。那应该打印的就是字符所对应的 ascll 码值。那为什么结果是 0 啊??
当我们看到 printf(“%d\n”, atoi(“1234”)) 的打印结果是“1234”。我们就航然大悟了。原来就是打印字符串中的整数部分
那事实真的是这样吗??让我们来看看下面的代码
#include<stdio.h>
#include<stdlib.h>int main()
{printf("%d\n", atoi("-12345"));printf("%d\n", atoi(" 12345"));printf("%d\n", atoi("-1234-5"));printf("%d\n", atoi("123 45"));printf("%d\n", atoi("123a45"));return 0;
}//打印结果
*****
-12345
12345
-1234
123
123*****
纳尼??不是打印的是字符串中的整数部分??那么应该输出的都是 “12345” 啊??
- 第一个输出说明:atoi函数可以打印负数
- 第二、三、四、五个输出说明:atoi函数在识别到第一个可识别的字符(整数字符)后开始,以后碰到障碍(除了整数字符以外),就停止读取
到这里,我们已经基本了解了atoi函数。那么,我们可以总结一下什么数据是atoi函数不能读取的:
- 空指针(NULL)
- 空字符
- 超过整数的范围
- 不是整数字符
🫅 模拟实现atoi函数
在上面,我们已经知道atoi函数的一些知识误区。接下来,让我们来实现一下atoi函数
//模拟实现atoi函数//表示字符串转化的两种状态
enum State
{VALID,INVALID
}state = INVALID; //默认是非法的#include<stdio.h>
#include<assert.h>
#include<ctype.h>
#include <climits>int my_atoi(char* ptr)
{//处理空指针assert(ptr);//处理空字符if (*ptr == '\0'){return 0;}//跳过空白字符while (isspace(*ptr)){ptr++;}//处理+ -int flag = 1;if (*ptr == '+')ptr++;else if (*ptr == '-'){flag = -1;ptr++;}//处理整数字符long long int ret = 0; //这里long long//是为了判断是否溢出while (*ptr){//处理整数字符if (isdigit(*ptr)){ret = ret * 10 + flag * (*ptr - '0');//是否溢出if (ret > INT_MAX)return INT_MAX;else if (ret < INT_MIN)return INT_MIN;}elsereturn (int)ret;ptr++;}//既然可以出while,那就说明走到了最后state = VALID;return (int)ret;}int main()
{int ret = my_atoi(" 12434&58");if (state)printf("非法字符串转化,%d\n", ret);elseprintf("%d\n", ret);return 0;}
码文不易,各位看官一键三连哦 💕💕💕
各位的鼓励与支持是我前进最大的动力游戏可以重来,但人生却没有“重启键”。
我们不能带着后悔去步入以后的生活。
在这绚烂的年华,我们一起
仗剑走江湖! ! !
相关文章:
C语言【atoi函数】
C语言【atoi函数】🫅系统atoi函数🫅 模拟实现atoi函数看到atoi函数,有人又会问有这个函数,我怎么没用过。那就说明:不是你刷题太少,就是atoi函数存在感太低。 这篇函数就带你领略atoi函数的魅力 Ǻ…...
一起学习用Verilog在FPGA上实现CNN----(八)integrationFC设计
1 integrationFC设计 LeNet-5网络结构全连接部分如图所示,该部分有2个全连接层,1个TanH激活层,1个SoftMax激活层: 图片来自附带的技术文档《Hardware Documentation》 integrationFC部分原理图,如图所示,…...
面试题总结
1.js的数据类型 分为基本数据类型和引用数据类型。 基本数据类型 ES5的5种:Null,undefined,Boolean,Number,String, ES6新增:Symbol表示独一无二的值 ES10新增:BigInt 表示任意大的…...
go进阶(1) -深入理解goroutine并发运行机制
并发指的是同时进行多个任务的程序,Web处理请求,读写处理操作,I/O操作都可以充分利用并发增长处理速度,随着网络的普及,并发操作逐渐不可或缺 一、goroutine简述 在Golang中一个goroutines就是一个执行单元ÿ…...
mongodb 操作记录
#启动服务 net start MongoDB #停止服务 net stop MongoDB #进入mongo shell 方式 mongo db #查看当前数据库是那个 #插入一条数据 db.runoob.insert({x:10}) #查找数据 db.runoob.find() 查询所有的数据库 show dbs #连接mongodb mongodb://[username:password]host1[:po…...
JDBC简单的示例
JDBC 编程步骤 加载驱动程序: Class.forName(driverClass) //加载MySql驱动 Class.forName("com.mysql.jdbc.Driver") //加载Oracle驱动 Class.forName("oracle.jdbc.driver.OracleDriver")获得数据库连接: DriverManager.getCon…...
Spring架构篇--2.3 远程通信基础--IO多路复用select,poll,epoll模型
前言:对于传统的BIO(同步阻塞)模型,当有客户端连接达到服务端,服务端在对改连接进行连接建立,和数据传输过程中,是无法响应其他客户端的,只有当服务端完成对一个客户端处理后&#x…...
python--matplotlib(4)
前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制作的图形达到出版级的标准。 其他matplotlib文章 python--matpl…...
【项目精选】城市公交查询系统(论文+视频+源码)
点击下载源码 1.1 选题背景 随着低碳生活的普及,人们更倾向于低碳环保的出行方式,完善公交系统无疑具有重要意义。公交是居民日常生活中最常使用的交通工具之一,伴随着我国经济繁荣和城市人口增长,出行工具的选择也变得越来越重要…...
less、sass、webpack(前端工程化)
目录 一、Less 1.配置less环境 1.先要安装node:在cmd中:node -v检查是否安装node 2.安装less :cnpm install -g less 3.检查less是否安装成功:lessc -v 4.安装成功后,在工作区创建xx.less文件 5.在控制台编译less,命令&…...
解析Java中的class文件
解析class文件需要把class文件当成文件流来处理,定义ClassReader结构体 type ClassReader struct {data []byte }go语言中的reslice语法可以跳过已经读过的数据。 同时定义了ClassFile数据结构来描述class文件的各个部分,该数据结构如下所示࿱…...
直播预告 | 企业如何轻松完成数据治理?火山引擎 DataLeap 给你一份实战攻略!
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 企业数字化转型正席卷全球,这不仅是趋势所在,也是企业发展必然面对的考题,也是企业最关心、最难决策的难题,数字化不…...
华为OD机试真题Python实现【 磁盘容量】真题+解题思路+代码(20222023)
磁盘容量 题目 磁盘的容量单位常用的有M、G、T 他们之间的换算关系为1T =1024G,1G=1024M 现在给定n块磁盘的容量,请对他们按从小到大的顺序进行稳定排序 例如给定5块盘的容量 5 1T 20M 3G 10G6T 3M12G9M 排序后的结果为 20M 3G 3M12G9M 1T 10G6T 注意单位可以重复出现 上述…...
php调试配置
错误信息输出 错误日志 nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog。原因是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出࿰…...
Spring架构篇--1 项目演化过程
前言:如今spring微服务以其灵活开发易于维护已基本占领开发占地,项目从一开始并不是这种服务的拆分,是一步步演变成现在的架构; 项目演化之路: 1 单体架构:开发和运维都较简单: 单体架构&am…...
华为OD机试真题Python实现【斗地主 2】真题+解题思路+代码(20222023)
斗地主 2 题目描述 在斗地主扑克牌游戏中,扑克牌由小到大的顺序为3 4 5 6 7 8 9 10 J Q K A 2 玩家可以出的扑克牌阵型有,单张,对子,顺子,飞机,炸弹等 其中顺子的出牌规则为,由至少 5 张由小到大连续递增的扑克牌组成 且不能包含2 例如:{3,4,5,6,7}、{3,4,5,6,7,8,9,1…...
Intel SIMD: AVX2
AVX2 资料: Intel 内部指令 — AVX和AVX2学习笔记Intel Intrinsics — AVX & AVX2 Learning NotesModule x86 AVX 向量寄存器有三种: 128-bit (XMM forms),AVX2 支持,符号 __m128, __m128d, __m128i256-bit (YMM forms)&a…...
Spring Cloud Nacos源码讲解(二)- Nacos客户端服务注册源码分析
Nacos客户端服务注册源码分析 服务注册信息 我们从Nacos-Client开始说起,那么说到客户端就涉及到服务注册,我们先了解一下Nacos客户端都会将什么信息传递给服务器,我们直接从Nacos Client项目的NamingTest说起 public class NamingTest…...
华为OD机试 - 停车场最大距离(Python) | 机试题+算法思路+考点+代码解析 【2023】
停车场最大距离 题目 停车场有一横排车位0代表没有停车,1代表有车. 至少停了一辆车在车位上,也至少有一个空位没有停车. 为防止刮蹭,需为停车人找到一个车位 使得停车人的车最近的车辆的距离是最大的 返回此时的最大距离 输入 一个用半角逗号分割的停车标识字符串,停车标识为…...
RPC(2)------ Netty(NIO) + 多种序列化协议 + JDK动态代理实现
依赖包解释 Guava 包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string process…...
从Netfilter到IPVS:深入解析Linux内核负载均衡的实现与配置
1. Linux内核网络框架与负载均衡基础 当你打开一个网页或使用手机APP时,后台可能有成百上千台服务器在协同工作。这些服务器如何高效分配流量?这就是负载均衡技术的用武之地。在Linux生态中,从Netfilter到IPVS的技术演进,为我们提…...
5分钟搞定KEPserver V6配置:Java读取西门子PLC数据的保姆级教程
5分钟极速配置KEPserver V6与Java通信:西门子S7-1500数据采集实战指南 当工业现场的PLC数据需要与IT系统集成时,OPC技术栈往往是最直接的选择。但传统OPC配置过程繁琐的文档和复杂的依赖管理,常让工程师在项目初期耗费大量时间在环境搭建上。…...
Java 25记录模式深度实战:手把手带你用模式匹配解构嵌套记录,效率提升47%(JVM实测数据)
第一章:Java 25记录模式的演进脉络与核心突破记录模式(Record Patterns)作为 Java 21 首次以预览特性引入、并在 Java 22 进一步增强、最终于 Java 25 正式成为标准特性的关键语言机制,标志着 Java 在模式匹配演进道路上完成从“解…...
Youtu-VL-4B-Instruct基础教程:system message规范写法避免API响应异常
Youtu-VL-4B-Instruct基础教程:system message规范写法避免API响应异常 你是不是在用Youtu-VL-4B-Instruct的API时,偶尔会遇到一些奇怪的响应?比如模型突然不按套路出牌,或者干脆给你返回一些看不懂的内容? 别担心&a…...
Ubuntu 20.04 下通过 PPA 快速部署 qBittorrent 及配置指南
1. 为什么选择qBittorrent? 如果你经常需要下载大型文件,比如开源系统镜像、影视素材或者游戏资源,那么一个靠谱的BT客户端绝对是刚需。我在Ubuntu上试过各种BT工具,最终发现qBittorrent是最稳定高效的选择。它完全开源免费&#…...
革新性植物大战僵尸全能修改工具:重定义游戏体验
革新性植物大战僵尸全能修改工具:重定义游戏体验 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 植物大战僵尸辅助工具PVZ Toolkit是一款专为经典游戏《植物大战僵尸》PC版设计的开源修…...
C语言起源发展全知道,带你了解编程界元老的辉煌历程
C言语是一种具有通用性的编程言语,在软件开发范畴被广泛运用,如操作系统、嵌入式系统、高性能服务器还有各类应用软件,它因强大功能、简洁语法以及高效性能而闻名,本文会详细介绍C言语的起源、发展进程以及其在当今编程世界里的地…...
手把手教你用Llama-3.2V-11B-cot:像聊天一样轻松实现图片智能分析
手把手教你用Llama-3.2V-11B-cot:像聊天一样轻松实现图片智能分析 1. 引言:当视觉大模型遇上聊天式交互 想象一下,你正面对一张复杂的医学影像或工程图纸,需要快速理解其中的关键信息。传统方法可能需要专业培训或反复查阅资料&…...
Qwen-Image-2512-SDNQ Web服务实战:WebUI下载功能与浏览器兼容性全平台测试
Qwen-Image-2512-SDNQ Web服务实战:WebUI下载功能与浏览器兼容性全平台测试 1. 项目概述与核心价值 今天我要和大家分享一个特别实用的AI图片生成项目——基于Qwen-Image-2512-SDNQ-uint4-svd-r32模型的Web服务。这个项目最大的亮点在于,它把复杂的AI图…...
InstructPix2Pix在.NET平台的应用开发实战
InstructPix2Pix在.NET平台的应用开发实战 1. 引言:当AI修图遇上.NET开发 想象一下这样的场景:电商平台的商品图片需要批量调整风格,摄影工作室想要快速实现创意效果,或者内容创作者需要即时编辑社交媒体图片。传统图像处理方式…...
