模拟实现 Atoi

模拟实现 Atoi

分析思路:

首先先判断是否为空指针

接着我们来引入一个新的库函数isspace它是来解决前面有多少空格的问题,接着是处理正负号的问题,如果指针检测到前面有—,那么就令flg=-1,

我们又要引入一个新的库函数isdight 来判断前面是否有数字,

我们还定义了一个全局变量,叫state,是为了判断是否运算出现了问题

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
#include <assert.h>
#include <ctype.h>
int state = 0;int MyAtoi(const char* str)
{assert(str != NULL);if (*str == '\0'){return 0;}//处理空格问题 while (isspace(*str)){str++;}//处理正负号的问题int flg = 1;if (*str == '-'){flg = -1;str++;}// +  没有+号是不加的 else if(*str == '+'){flg = 1;str++;}else{flg = 1;}//开始进行转换了long long ret = 0;//是因为如果要计算的数很大,int类型是完全不够的while (*str != '\0'){//isdigit 判断当前字符是否是数字字符 ‘1’ ‘2’  ‘3’  '4'if (isdigit(*str)){//    0  * 10  + ('1' - '0') * -1   -> -1//    -1  * 10  + ('2' - '0') * -1  ->-12//    -12  * 10  + ('3' - '0') * -1  -> -123ret = ret * 10 + (*str - '0') * flg;if (ret >= INT_MAX) {return  INT_MAX;}if (ret <= INT_MIN){return  INT_MIN;}}else{return (int)ret;}str++;}if (*str == '\0'){state = 1;}return (int)ret;
}int main()
{int ret = MyAtoi("123a456");//"-123a456"if (state == 1){printf("正常数字的转化: %d\n",ret);}else{printf("非正常数字的转化: %d\n", ret);}return 0;
}

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

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

相关文章

SAP ABAP 锁对象的分类及其作用

记录锁概念&#xff0c;好记性不如烂笔头。 原博客链接&#xff1a;SAP 锁对象的分类及其作用_sap 程序锁对象-CSDN博客 锁类型描述解释说明E独占锁&#xff08;写入锁&#xff09;锁定的数据仅可由一个用户进行显示或编辑。对另一独占锁或共享锁的请求仅将遭到拒绝&#xff…

Java 18新特性概览与解读

随着技术的不断进步&#xff0c;Java作为最流行的编程语言之一&#xff0c;也在持续地进行版本更新&#xff0c;为开发人员提供更强大、更高效的工具和特性。Java 18作为最新的稳定版本&#xff0c;引入了一系列引人注目的新特性和改进。以下是对Java 18中一些主要新特性的详细…

电商淘宝京东,精准关键词搜索API接口

当使用电商淘宝京东的精准关键词搜索API接口时&#xff0c;以下是清晰的步骤指南&#xff1a; 一、注册与申请API密钥 注册账号&#xff1a;在淘宝开放平台或京东开放平台注册成为开发者&#xff0c;并创建账号。 创建应用&#xff1a;登录后&#xff0c;在开放平台创建一个应…

最值得入手的宠物空气净化器!希喂、352、安德迈真实测评~

随着天气越来越热&#xff0c;猫咪们也都开始掉毛啦。这时候&#xff0c;家里面到处都飘浮着猫咪们的浮毛和粑粑异味。抵抗力较差的铲屎官&#xff0c;身体就会出现一些问题&#xff0c;例如打喷嚏、咳嗽等呼吸道问题。 很多铲屎官以为用粘毛器、吸尘器等工具就能将猫咪们掉落…

msvcp100.dll已加载但找不到入口点的处理方法,分析比较靠谱的msvcp100.dll解决方法

用户在日常使用中有时会遇到一个错误提示&#xff1a;“已加载 msvcp100.dll&#xff0c;但找不到入口点”。这一信息不仅引发了使用上的不便&#xff0c;也对软件的稳定性产生了质疑。理解并解决该问题不仅对确保计算机正常运行至关重要&#xff0c;也对维护软件的长期稳定性和…

虚拟货币投资指南|XEX交易所

什么是虚拟货币&#xff1f; 虚拟货币是一种基于区块链技术的数字资产&#xff0c;具有去中心化、透明性和安全性等特点。比特币&#xff08;BTC&#xff09;、以太坊&#xff08;ETH&#xff09;和莱特币&#xff08;LTC&#xff09;等是目前较为知名的虚拟货币。 虚拟货币投…

【Android面试八股文】谈谈你对TCP 流量控制与拥塞控制的理解

文章目录 一、流量控制1.1 流量控制的概念1.2 滑动窗口1.3 零窗口二 、拥塞控制2.1 拥塞控制的概念2.2 慢启动2.3 拥塞避免2.4 快重传与快恢复2.4.1 快重传2.4.2 快恢复三、总结TCP的拥塞控制和流量控制虽然采取的动作很相似,但 拥塞控制与网络的拥堵情况相关联,而 流量控制…

腾讯元宝APP上线:国内大模型产品新力量

随着近日腾讯元宝APP的正式上线&#xff0c;国内大模型产品领域又迎来了一位新成员。这款APP的推出&#xff0c;不仅丰富了市场选择&#xff0c;也为我们提供了更多元、更智能的交互体验。在当下这个信息爆炸的时代&#xff0c;大模型产品以其强大的数据处理能力和广泛的应用场…

JavaScript 的新技能:5 大技巧,打造更强大的 Web 应用

大家好&#xff0c;我是前端宝哥。 JavaScript 在现代 Web 开发中简直是必不可少的工具&#xff01; 它一直在不断变化&#xff0c;为我们带来新玩法。今天就来跟大家聊聊 5 个顶尖的 JavaScript 技术&#xff0c;教你用更酷炫的方式构建 Web 应用&#xff01; 为什么 JavaScri…

shell脚本编程(概念、编程和语句)

一、shell脚本概述 1、shell脚本概念 Shell 脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件&#xff0c;将一些 shell 的语法与命令&#xff08;含外部命令&#xff09;写在里面&#xff0c;搭配正则表达式、管道命令与数据流重定向等功能。 2、Shell 脚…

js实例对象读写原型对象成员

在 JavaScript 中&#xff0c;实例对象可以读写原型对象的成员。原型对象是一个对象&#xff0c;用于存储共享的属性和方法&#xff0c;它是通过构造函数创建的实例对象的共享属性和方法的来源。 你可以通过以下几种方式来读写原型对象的成员&#xff1a; 通过实例对象的__pro…

15、架构-可靠通讯之服务安全

概述 我们已经了解了与具体架构形式无关的业界主流安全概念和技术标准&#xff08;如TLS、JWT、OAuth 2等概念&#xff09;&#xff0c;在上一章节探讨了与微服务运作特点相适应的零信任安全模型。在本节中&#xff0c;我们将从实践和编码的角度出发&#xff0c;介绍在微服务时…

上证50etf期权的手续费要多少钱?期权懂分享

今天带你了解上证50etf期权的手续费要多少钱&#xff1f;上证50ETF期权的开户一般交易手续费默认为7元一张。在进行期权开户之前&#xff0c;建议提前联系一名券商的客户经理&#xff0c;协商期权手续费优惠事宜。 上证50etf期权的手续费要多少钱&#xff1f; 上证50ETF期权的…

IDEA中SpringMVC的运行环境问题

文章目录 一、IEAD 清理缓存二、用阿里云和spring创建 SpringMVC 项目中 pom.xml 文件的区别 一、IEAD 清理缓存 springMVC 运行时存在一些之前运行过的缓存导致项目不能运行&#xff0c;可以试试清理缓存 二、用阿里云和spring创建 SpringMVC 项目中 pom.xml 文件的区别 以下…

通过LotusScript中的NotesDateTime类来进行时间计算

大家好&#xff0c;才是真的好。 今天我们介绍的是时间日期处理&#xff0c;其实以前也讲过&#xff0c;主要是通过LotusScript中的NotesDateTime类来进行时间计算。 但是这里也存在一个问题&#xff1a;就是时间日期类的比较只能计算出秒&#xff0c;不能计算出毫秒。 毕竟…

python反爬⾍策略应对

应对⽹站的反爬⾍措施通常涉及到⼀系列技术和策略&#xff0c;以模仿正常⽤⼾的⾏为或规避检测机制。 1. 更换⽤⼾代理&#xff08;User-Agent&#xff09;&#xff1a;很多⽹站会检查HTTP请求的 User-Agent 字段来识别爬⾍。通过更换不同的 User-Agent &#xff0c;爬⾍可以…

BEV 中 multi-frame fusion 多侦融合(一)

文章目录 参数设置align_dynamic_thing:为了将动态物体的点云数据从上一帧对齐到当前帧流程旋转函数平移公式filter_points_in_ego:筛选出属于特定实例的点get_intermediate_frame_info: 函数用于获取中间帧的信息,包括点云数据、传感器校准信息、自车姿态、边界框及其对应…

电脑怎么录音?分享2种音频录制方法

在日常生活和工作中&#xff0c;我们经常需要录制电脑上的音频&#xff0c;无论是为了记录会议内容、保存网络课程&#xff0c;还是为了制作自己的音频素材&#xff0c;录音功能都显得尤为重要。那么电脑怎么录音&#xff1f;本文将详细介绍2种方法教你如何在电脑上进行录音&am…

Qt做群控系统

群控系统顾名思义&#xff0c;一台设备控制多台机器。首先我们来创造下界面。我们通过QT UI设计界面。设计界面如下&#xff1a; 登录界面&#xff1a; 登录界面分为两种角色&#xff0c;一种是管理员&#xff0c;另一种是超级管理员。两种用户的主界面是不同的。通过选中记住…

MyBatis中的延迟加载与分步查询总结

MyBatis中的延迟加载与分步查询总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 延迟加载 延迟加载是MyBatis中的一项重要特性&#xff0c;它允许在需要…