当前位置: 首页 > news >正文

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

引言

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.hskmm.com/?act=detail&tid=11697

相关文章:

  • 02.Python:Flash初步使用
  • 解决Kubernetes集群中master节点无法与node节点通信的策略
  • 从高版本的sqlserver向低版本的sqlserver上复制表和数据的方法
  • 在Ubuntu18.04安装兼容JDK 8的Eclipse集成开发环境
  • 【php】带数组的文件列表生成,返回数组
  • 配置Nginx以支持Websocket连接的方法
  • Extundelete工具恢复数据
  • 重新理解12306:它卖的从来不是“库存”,而是“状态”
  • 基于Python+Vue开发的房产销售管理系统源码+运行步骤
  • 混合架构(SpringCloud+Dubbo)的整合方案与适用场景(一) - 教程
  • 安全技术深度探讨:从鱿鱼皮肤到AI漏洞挖掘
  • 【Bluedroid】A2DP Source 音频流暂停流程解析[3]:AVDTP 协议中 Suspend Accept 响应的处理流程与建立分析(Suspend Accept)
  • 安装WSL
  • 数据建模流程分析
  • 数学笔记
  • PHP8.5 Pipeline Operator 你应该了解的 8 个特性
  • Nvidia Orin DK 本地 ollama 主流 20GB 级模型 gpt-oss, gemma3, qwen3 部署与测试 - 实践
  • 详细介绍:在Ubuntu平台搭建RTMP直播服务器使用SRS简要指南
  • 完整教程:Ajax-day2(图书管理)-弹框显示和隐藏
  • civil 3d com api 帮助文档
  • WebSockets与Socket.io渗透测试实战指南
  • 完整教程:VLAN划分——TRUNK
  • 现代操作系统-音频处理技术1 Linux驱动底层
  • 元推理:人和事物,都是针对性的存在着与必然因果,残缺之美
  • 人和事物,都是针对性的存在着与必然因果,残缺之美
  • ArcEngine10.2中融合工具Dissolve的bug
  • Linux驱动适配I2C/SPI例子
  • [重要] PySimpleGU控件函数用法整理
  • 使用XState测试分布式微服务的完整指南
  • 含“华”量超高的奥迪,卖爆了