当前位置: 首页 > 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.gsyq.cn/news/8853.html

相关文章:

  • 02.Python:Flash初步使用
  • 从高版本的sqlserver向低版本的sqlserver上复制表和数据的方法
  • 【php】带数组的文件列表生成,返回数组
  • 混合架构(SpringCloud+Dubbo)的整合方案与适用场景(一) - 教程
  • 通过代码认识 CNN:用 PyTorch 构建卷积神经网络识别手写数字
  • 安全技术深度探讨:从鱿鱼皮肤到AI漏洞挖掘
  • 安装WSL
  • 数据建模流程分析
  • Django HttpRequest 对象的常用属性 - 指南
  • 完整教程:Ajax-day2(图书管理)-弹框显示和隐藏
  • civil 3d com api 帮助文档
  • 完整教程:【教程4>第8章>第28节】OFDM完整通信链路项目FPGA开发22——提取导频
  • 实用指南:万字详解架构设计:业务架构、应用架构、数据架构、技术架构、单体、分布式、微服务都是什么?
  • ArcEngine10.2中融合工具Dissolve的bug
  • 含“华”量超高的奥迪,卖爆了
  • 在Ubuntu系统中使用gcc和Makefile编译C程序
  • 9.20 闲话
  • IDEA 自动编译和热部署
  • RabbitMQ核心模型简介,Hello World的生产与消费
  • Linux 基础命令 02
  • Proxy 库解析(三)
  • 软工个人项目 - Helen
  • 概率论第二章部分习题
  • ENSP模拟搭建典型中小型企业网架构
  • 【Java】HashMap讲解
  • 图解16:数据和信息流的9大架构模式
  • 【Spring Boot 报错已克服】Spring Boot 模糊映射(Ambiguous mapping)报错解决指南
  • 货运系统源码 货运物流小代码 货运强大的平台搭建 货运软件开发
  • 2025.9.20
  • Spring Boot 2.5.0 集成 Elasticsearch 7.12.0 实现 CRUD 完整指南(Windows 环境) - 教程