atoi() - 字符串( ASCLL )转换为整数( int )

news/2025/9/21 10:03:12/文章来源:https://www.cnblogs.com/happykino/p/19103222

引言

atoi() 函数是 C 标准库中用于将字符串(ASCII 字符串)转换为整数(int 类型)的核心函数,其名称是 “ASCII to Integer” 的缩写。

一、基本信息

函数原型

#include <stdlib.h>  // 必须包含的头文件
int atoi(const char *str);/*
参数 str:指向待转换的字符串的指针(const 表示函数不修改输入字符串)。
返回值:转换后的 int 类型整数;若转换失败(如字符串无有效数字),则返回 0。
*/

核心功能

将符合整数格式的字符串(如 "123"、"-456"、" 789abc")转换为对应的整数,忽略字符串开头的空白字符(空格、制表符 \t、换行符 \n 等),遇到非数字字符时停止转换。

二、关键特性

转换规则示例

输入字符串 转换结果 说明
"123" 123 正常正整数
"-456" -456 正常负整数
" 789abc" 789 忽略开头空白,遇到 'a' 停止
"abc123" 0 无开头有效数字,转换失败
""(空字符串) 0 无任何字符,转换失败
" +999.123" 999 遇到 '.' 停止,仅转换整数部分

局限性

1.无法区分 “转换失败” 与 “有效结果 0”
2.整数范围溢出的未定义行为
3.不支持进制指定

三、示例代码

#include <stdio.h>
#include <stdlib.h>  // 包含 atoi() 的头文件int main() 
{// 测试不同类型的输入字符串char str1[] = "12345";       // 正常正整数char str2[] = "-6789";       // 正常负整数char str3[] = "  100abc";    // 带空白和非数字后缀char str4[] = "abc123";      // 非数字开头char str5[] = "2147483648";  // 超出 32 位 int 最大值(未定义行为)// 调用 atoi() 转换并打印结果printf("atoi(\"%s\") = %d\n", str1, atoi(str1));  // 12345printf("atoi(\"%s\") = %d\n", str2, atoi(str2));  // -6789printf("atoi(\"%s\") = %d\n", str3, atoi(str3));  // 100printf("atoi(\"%s\") = %d\n", str4, atoi(str4));  // 0(转换失败)printf("atoi(\"%s\") = %d\n", str5, atoi(str5));  // 未定义(可能返回 2147483647 或其他值)return 0;
}

四、与类似函数的对比(atoi() vs strtol())

atoi() 是 strtol() 的简化版本,两者的核心差异如下:

特性 atoi(const char *str) strtol(const char *str, char **endptr, int base)
错误处理 无(失败返回 0,无法区分有效 0) 可通过 endptr 判断是否转换到非数字字符
整数范围 仅支持 int,溢出未定义 支持 long,溢出返回 LONG_MAX/LONG_MIN
进制支持 仅十进制 支持 2~36 进制(base=0 自动识别十进制 / 八进制 / 十六进制)
适用场景 简单十进制转换,无需严谨错误处理 需判断转换有效性、支持多进制或大整数的场景

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

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

相关文章

02.Python:Flash初步使用

python,flask前端处理:Vue+Axios Flash:后端框架,默认端口 5000 需要注意:get与post方法,对应的传参与取参方式 --------------<!DOCTYPE html> <html lang="en"><head><meta cha…

解决Kubernetes集群中master节点无法与node节点通信的策略

检查基础网络连接: 使用 ping命令检测节点间网络连通性。若无法ping通,可能是云服务的安全组或本地防火墙规则限制,需对安全组规则和防火墙规则(如iptables)进行审查。 ping <node-IP-address>验证kubelet服…

从高版本的sqlserver向低版本的sqlserver上复制表和数据的方法

今天要从一台sqlserver 2016的电脑上把数据库复制到一台装有sqlserver2012的服务器上,使用备份加还原的时候报错,提示不支持,导出sql语句的方式也没有成功,用navicat也没成功。方法如下: 在目标服务器上打开SQL S…

【ROS2】 忽略局域网多机通信导致数据接收的bug - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境

更新系统包列表:首先,打开终端,并执行以下命令以更新Ubuntu系统的包列表: sudo apt update安装Java开发工具包 (JDK 8):在终端中运行以下命令安装OpenJDK 8: sudo apt install openjdk-8-jdk 安装完毕后,运行下…

【php】带数组的文件列表生成,返回数组

【php】带数组的文件列表生成,返回数组$list = gen_files_list(D:/novel/); for($i = 0; $i < count($lis); $i++) {echo "<li><a href=" . htmlspecialchars($lis[$i]) . ">" . …

配置Nginx以支持Websocket连接的方法

安装Nginx:首先,确保您安装了最新版本的Nginx,因为Websocket支持通常在较新版本中表现更佳。设置HTTP升级头:当Websocket客户端请求与服务器建立连接时,它会发送一个HTTP请求,请求中含有 Upgrade: websocket和 C…

Extundelete工具恢复数据

Extundelete 是一款专为 Ext 文件系统(Linux 系统中最常用的文件系统,如 Ext3、Ext4)设计的开源数据恢复工具,核心功能是恢复被意外删除(通过 rm 命令等操作)但尚未被新数据覆盖的文件或目录。它基于文件系统的底…

最新!!!MySQL环境搭建(windows系统) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

重新理解12306:它卖的从来不是“库存”,而是“状态”

你是否也曾好奇,12306这个每逢节假日就承受亿级流量的系统,背后到底是如何工作的?一个常见的误解是:把它当作淘宝一样的电商系统,认为它管理的是简单的商品库存。但真相远非如此。 让我们做一个极端的假设:一列高…

基于Python+Vue开发的房产销售管理系统源码+运行步骤

项目简介该项目是基于Python+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于…

WinSCP从Windows传文件到Linux,文件名为中文显示乱码

View PostWinSCP从Windows传文件到Linux,文件名为中文显示乱码1、登录界面,录入服务器地址、用户名、密码,点击【Advanced】2、设置UTF-8 encoding for filenames为on即可,默认为Auto

混合架构(SpringCloud+Dubbo)的整合方案与适用场景(一) - 教程

混合架构(SpringCloud+Dubbo)的整合方案与适用场景(一) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

Oracle中case when函数和decode函数

View PostOracle中case when函数和decode函数1、case when函数: select ename,case deptno when 10 then ACCOUNTING when 20 then RESEARCH else SALES end from emp; select ename,case when deptno=10 then ACCOUN…

Jmeter生成随机数

View PostJmeter生成随机数1、使用函数助手里面的__Random函数2、使用beanshell提取器 import java.util.Random; Random rand = new Random(); int num = rand.nextInt(900) + 1000000; vars.put("randomNum&quo…

通过代码认识 CNN:用 PyTorch 构建卷积神经网络识别手写数字

通过代码认识 CNN:用 PyTorch 构建卷积神经网络识别手写数字2025-09-21 09:29 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !import…

SQLite数据库 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

安全技术深度探讨:从鱿鱼皮肤到AI漏洞挖掘

本文探讨了鱿鱼皮肤的光学特性及其潜在安全隐喻,并深入分析了AI在漏洞挖掘、硬件侧信道攻击、智能合约审计等领域的应用与风险,涉及多项实际技术案例与安全架构思考。周五鱿鱼博客:鱿鱼皮肤如何扭曲光线 新研究显示…

【Bluedroid】A2DP Source 音频流暂停流程解析[3]:AVDTP 协议中 Suspend Accept 响应的处理流程与建立分析(Suspend Accept)

【Bluedroid】A2DP Source 音频流暂停流程解析[3]:AVDTP 协议中 Suspend Accept 响应的处理流程与建立分析(Suspend Accept)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !…

实用指南:【Linux篇章】再续传输层协议UDP :从低可靠到极速传输的协议重生之路,揭秘无连接通信的二次进化密码!

实用指南:【Linux篇章】再续传输层协议UDP :从低可靠到极速传输的协议重生之路,揭秘无连接通信的二次进化密码!2025-09-21 09:14 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word…