C语言-atoi函数的使用和实现

atoi是C语言中常见的函数。大家可能对于他不太熟悉,其主要还是因为学校可能没有讲到。其实有很多函数像atol、atof都是一样的,本篇文章以atoi为例,剩余大家如果感兴趣可以再去了解。

目录

1.函数介绍

2.代码演示

3.atoi函数的模拟实现

4.扩展


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;
}

输出结果:VS2022

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;
}

4.扩展

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

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

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

可以扩展学习一下。

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

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

相关文章

【Pyhton爬虫实战】爬取京东商城的商品信息

爬取京东商城的商品信息&#xff0c;并将数据以Dataframe形式展示 from selenium.webdriver import Chrome, ChromeOptions import re import pymysql from selenium.webdriver.common.by import By import collections import pandas as pdclass Spider():def __init__(self)…

百面算法工程师 | 卷积基础知识——Convolution

目录 8.1 图像卷积过程 8.2 卷积层基本参数 8.3 卷积后图像的长和宽大小的计算方式 8.4 卷积神经网络中的权重共享 8.5 上采样中的反卷积 8.6 空洞卷积 8.7 深度可分离卷积 8.8 为什么可分离卷积中Depthwise卷积后还要进行pointwise卷积 8.9 分组卷积 Group Conv 8.1…

2024年最重要的AI趋势

2022年是生成式AI在公众意识中爆发的一年&#xff0c;2023年是它开始在商业世界扎根的一年。因此&#xff0c;2024年将是关乎AI未来关键的一年&#xff0c;因为研究人员和企业都在寻求&#xff1a;如何将这一技术上的进化飞跃最实际地融入我们的日常生活。 生成式AI的进化与计…

5分钟快速搭建k8s集群1.29.x

配置主机名和hosts 配置主机名 hostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname node3 vim /etc/hosts 172.19.35.202 node1 172.19.35.203 node2 172.19.35.204 node3 测试 hostname ping -c 3 node2 配置时间同步 关闭防火墙 sys…

AI视频教程下载:ChatGPT个人生产力提升指南

在本课程中&#xff0c;您将学习如何成功地将ChatGPT融入您的工作和生活&#xff0c;以优化您的社交媒体内容并扩展您的业务。 您将学习如何使用ChatGPT自动创建、校对、总结和翻译文本&#xff0c;以及如何与机器人沟通以实现您的目标。 您还将学习如何创建jQuery代码、编程…

倪海厦是怎么去思考问题的(一)下

1《天纪》是自然法则 2自然法则是个《真理》 3《真理》不需要再证实 4《真理》没有二元对立 紧接着第三点&#xff1a;真理不需要再去证实。现在有很多的人呢&#xff0c;看书学习&#xff0c;自认为自己很聪明&#xff0c;总要去证实一些东西。证明谁的说法是错的&#xff…

麒麟龙芯loongarch64 electron 打包deb包

在麒麟龙芯&#xff08;loongarch64&#xff09;电脑上 使用electron 开发桌面应用。之前用electron-packager 打包出来的是文件夹 是 unpack 包。现在需要打包deb包&#xff0c;依据开发指南开始打包。 在项目文件夹下 打开终端 输入 npm run packager 先打包unpack包 然后…

信创测试究竟是什么?与性能测试的差别是什么?

信创测试和性能测试在多个方面存在显著的区别。 首先&#xff0c;信创测试是一个更为全面和系统的测试过程&#xff0c;它主要针对信创工程项目中的产品、系统等进行测试和验证&#xff0c;以确保其自主可控和满足性能要求。这包括适配测试、功能测试、性能测试、安全测试、兼…

Day40 网络编程(二) InetAddress类, Socket ,TCP编程,UDP编程

Day40 网络编程&#xff08;二&#xff09; InetAddress类, Socket ,TCP编程&#xff0c;UDP编程 文章目录 Day40 网络编程&#xff08;二&#xff09; InetAddress类, Socket ,TCP编程&#xff0c;UDP编程一、 InetAddress类二、 Socket三、TCP编程四、UDP编程 一、 InetAddre…

ATFX汇市:澳大利亚一季度CPI年率大降,澳元升值态势延续

▲ATFX图 据澳大利亚统计局数据&#xff0c;第一季度CPI年率最新值3.6%&#xff0c;相比前值4.1%大降0.5个百分点&#xff0c;但仍高于3.5%的预期值。历史数据看&#xff0c;自从2022年四季度创出7.8%阶段性高点之后&#xff0c;澳大利亚的季度CPI年率就保持着稳定的下降态势。…

ssm项目启动的时候 修改 配置文件 定义的值

ssm项目启动的时候 修改 配置文件 定义的值 import org.springframework.beans.factory.InitializingBean; import org.springframework.core.env.ConfigurableEnvironment;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import …

SQLite去除.db-shm和.db-wal文件【已解决】

原因是开启了WAL 日志模式&#xff0c;实现日志回滚功能&#xff1b; 如果是多个连接访问数据库就会出现共享内存-shm文件 PRAGMA journal_modeWAL; 解决办法就是设置为默认模式 PRAGMA journal_modeDELETE; 执行成功后断开再重新连接&#xff0c;就不会出现这两个文件了…

翻译《The Old New Thing》 - Why are HANDLE return values so inconsistent?

Why are HANDLE return values so inconsistent? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20040302-00/?p40443 Raymond Chen 2004年01月27日 简介 在处理 Windows 编程中的句柄时&#xff0c;开发者需要面对的一个挑战是不同函数可…

SWCTF

easy_php 源码 <?php// flag is in flag.php highlight_file(__FILE__); ini_set(display_errors, 0); error_reporting(0);if (isset($_GET[myon1]) && isset($_GET[myon2]) && isset($_GET[myon3])) {$myon1 $_GET[myon1];$myon2 $_GET[myon2];$myon…

苍穹外卖day12 (Apache POI) 数据统计-Excel报表

文章目录 前言一、工作台1.1 今日数据1.1.1 接口设计1.1.2 代码实现 1.2 订单管理接口1.3菜品总览接口1.4 套餐总览接口1.5 订单搜索&#xff08;已完成&#xff09;1.6 各个状态的订单数量统计&#xff08;已完成&#xff09; 二、Apache POI2.1 概述2.2 效果展示 三、导出运营…

vue中web端播放rtsp视频流(摄像头监控视频)(海康威视录像机)

一、ffmpeg安装​​​​​​ ffmpeg下载 https://ffmpeg.org/download.html找ffmpeg-release-essentials.zip点击下载&#xff0c;下载完解压ffmpeg.exe 程序运行 二、配置ffmpeg环境变量 添加成功后验证是否生效任意地方打开cmd窗口输入 ffmpeg 打印如下表示成功 三、node…

谈谈对情绪周期和题材轮动的个人理解

首先讲两个概念&#xff1a; 1、情绪周期 我个人理解的情绪周期&#xff0c;就是不管在大盘跌与涨的过程中&#xff0c;短线情绪都会有几个阶段&#xff0c;低位震荡&#xff0c;主升浪&#xff0c;高位震荡&#xff0c;退潮期&#xff0c;这几个阶段。 低位震荡指的是&#xf…

未来五十年,智能科技将如何改变传统行业格局?

未来五十年内&#xff0c;随着人工智能&#xff08;AI&#xff09;和智能科技的不断发展&#xff0c;许多行业将面临被取代的风险。虽然这种趋势可能会带来一些担忧&#xff0c;但也将为人类社会带来巨大的变革。下面将详细探讨哪些行业可能会在未来被智能科技所取代。 ▶ 制造…

利用弹性云主机部署高效数据库系统

在当今云计算的时代&#xff0c;弹性云主机&#xff08;EC2&#xff09;为我们提供了前所未有的灵活性和可扩展性&#xff0c;使得在云端部署高效的数据库系统成为可能。本文将从选择适当的云服务配置、优化数据库设置、建立完备的数据备份与恢复策略&#xff0c;以及加强数据库…

ardupilot开发 --- Jetson Orin Nano 篇

多情应笑我早生华发 0. 一些概念1. 系统安装&#xff08;刷机、flash&#xff09;1.1 使用SD卡安装系统1.2 使用固态硬盘安装系统 0. 一些概念 官网&#xff1a;https://www.nvidia.com/en-us/ Developers Documentation Getting Started Jetson Developer Kits User Guid…