1. 常见的字符串转整数方法1.1 atoi()atoi是C语言中最简单、最基础的字符串转整数函数。它接受一个字符串并返回对应的整数值。1intatoi(constchar*str);优点简单易用适合处理非常基础的字符串转整数操作。缺点没有错误处理机制。如果字符串中包含非数字字符它会返回 0无法区分abc123和0这种情况。示例123456789#include stdio.h#include stdlib.hintmain() {constchar*str 12345;intnum atoi(str);printf(String: %s, Integer: %d\n, str, num);return0;}对于简单的需求atoi非常便捷但由于它无法检测错误在大部分情况下我们更推荐使用其他更强大的函数。1.2 strtol() 和 strtoll()相比atoistrtol和strtoll提供了更强大的功能支持错误检测、多进制转换并且能精确处理转换中的每一个字符。12longintstrtol(constchar*str,char**endptr,intbase);longlongintstrtoll(constchar*str,char**endptr,intbase);参数str输入字符串。endptr指向解析结束位置的指针可用于处理非数字字符部分。如果不需要可以传NULL。base数字的进制常用为 10也可以为 2、8、16 等其他进制。优点能处理进制转换如二进制、十六进制。支持错误处理可以检测字符串中的非数字部分。示例1234567891011121314#include stdio.h#include stdlib.hintmain() {constchar*str 12345abc;char*endptr;longnum strtol(str, endptr, 10);printf(String: %s, Integer: %ld\n, str, num);if(*endptr !\0) {printf(Non-numeric part: %s\n, endptr);}return0;}输出12String: 12345abc, Integer: 12345Non-numeric part: abc优缺点总结优点支持多进制能够检测转换中的错误部分。缺点返回值是long或long long需要注意数据范围。1.3 sscanf()sscanf是一个格式化输入函数可以灵活解析各种数据格式包括整数和浮点数。它的格式类似于printf但用于从字符串中读取数据。1intsscanf(constchar*str,constchar*format, ...);示例123456789#include stdio.hintmain() {constchar*str 12345;intnum;sscanf(str,%d, num);printf(String: %s, Integer: %d\n, str, num);return0;}优缺点优点灵活适合处理复杂的字符串。缺点错误处理能力有限没有strtol那样的详细控制。2. 字符串转浮点数方法2.1 atof()类似于atoiatof是将字符串转换为浮点数double的简便方法。1doubleatof(constchar*str);优缺点优点简单易用。缺点没有错误处理功能无法检测到非数字字符的存在。示例123456789#include stdio.h#include stdlib.hintmain() {constchar*str 123.45;doublenum atof(str);printf(String: %s, Float: %f\n, str, num);return0;}虽然atof非常便捷但由于缺乏错误处理机制它只适用于非常简单的场景。在实际开发中推荐使用strtod。2.2 strtod()strtod是转换字符串为浮点数的最佳选择类似于strtol它支持错误检测并可以解析复杂的浮点数格式。1doublestrtod(constchar*str,char**endptr);示例1234567891011121314#include stdio.h#include stdlib.hintmain() {constchar*str 123.45abc;char*endptr;doublenum strtod(str, endptr);printf(String: %s, Float: %f\n, str, num);if(*endptr !\0) {printf(Non-numeric part: %s\n, endptr);}return0;}优缺点优点支持错误处理能够精确解析浮点数。缺点需要处理返回值的类型为double精度较高但可能不适合所有应用场景。3. 同时支持整数和浮点数的转换方法3.1 sscanf()sscanf不仅可以转换字符串为整数也可以转换为浮点数。通过不同的格式化字符串sscanf可以灵活地从字符串中提取出所需的数值类型。示例12345678910111213#include stdio.hintmain() {constchar*str 123.45;intint_value;floatfloat_value;sscanf(str,%d, int_value);// 将字符串转换为整数sscanf(str,%f, float_value);// 将字符串转换为浮点数printf(Integer: %d, Float: %f\n, int_value, float_value);return0;}sscanf的灵活性让它能够应对多种格式的解析需求但由于没有太强的错误处理机制因此需要谨慎使用。4. 注意事项与陷阱4.1 非数字字符如前所述简单的转换函数如atoi和atof没有错误检测机制因此当字符串中包含非数字字符时它们可能会返回 0 而不会给出警告。为了避免这种情况推荐使用strtol和strtod这样具备错误检测的函数。4.2 数据溢出在使用整数转换时特别要注意数据溢出的问题。strtol可以通过设置errno为ERANGE来检测溢出情况因此在实际开发中应尽量选择它来处理大范围的数据。4.3 进制转换在某些情况下字符串中的数字可能不是十进制可能是二进制、八进制或十六进制。strtol提供了进制转换的能力可以通过base参数指定需要解析的进制。5. 小结在 C 语言中将字符串转换为整数或浮点数是一个常见但需要谨慎处理的操作。根据不同的需求我们可以选择不同的函数简单场景atoi和atof简单易用但没有错误处理。复杂场景strtol和strtod提供了错误检测、进制转换等功能是更稳健的选择。格式化输入sscanf可以处理复杂的字符串格式是解析多种数据类型的利器。在实际开发中错误处理至关重要特别是在处理用户输入或文件解析时。通过合理选择这些函数能够让你的代码更健壮避免潜在的隐患。
企业数字化 ERP 产品动态
相关推荐
ffmpeg-python 入门:5 行代码做出淡入淡出 ffmpeg-python 入门:5 行代码做出淡入淡出 【免费下载链接】ffmpeg-python Python bindings for FFmpeg - with complex filtering support 项目地址: https://gitcode.com/gh_mirrors/ff/ffmpeg-python
这是一份针对 ffmpeg-python 的上手引导,它… · 2026/11/5 1:31:32
开发的一款IOT项目用调试工具 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 1:31:32
刷完机 App 装不上、密码设不了,元凶是个 1~2MB 的分区 前言
设备是一台二手小米10,系统从官方MIUI换成了LineageOS。刷完能正常开机,但装不了App,也设不了密码;用ADB却能装,刷回MIUI又一切正常。
折腾了两天,最后定位到FRP分区残留。下面按排查顺序写。 故障现… · 2026/11/5 1:30:31
东南亚SHP文件诊断与修复:GDAL+GeoPandas实战指南 简介:本资源是一套完整的东南亚区域GIS矢量数据集,面向地理信息科学、城市规划、环境研究及区域经济分析等领域的初学者与专业用户,解决高精度行政区划、水系与城市空间分布数据缺失问题。压缩包共53个文件,包含6个核心SHP主文件&… · 2026/11/5 2:13:48
GDAL/rasterio实战:1km土地利用重分类与转移矩阵 简介:面向地理学、环境科学、城乡规划等领域的研究者与高年级学生,这套中国1km土地利用栅格数据覆盖1980至2015年共7个时点的遥感监测结果,可用于长时间序列的土地用途变迁分析、城市扩张识别与生态状况评估。压缩包共126个文件,以… · 2026/11/5 2:13:48
FastICA语音分离实战:盲源分离、频域对齐与SI-SDR评估 简介:面向语音信号处理与盲源分离学习者的FastICA语音分离实践包,适合具备一定MATLAB基础、希望从混合语音中提取独立源信号并理解FastICA流程的读者。压缩包共28个文件,约18.16MB,以26个wav语音与音乐样本为主,配合1个… · 2026/11/5 2:13:48
FastICA语音分离:从盲源分离到Python实现与SI-SDR评估 简介:围绕FastICA语音分离的这套资料,面向正在学习盲源分离、语音增强与多说话人分离的学生和算法实践者,帮助其理解独立成分分析从混合语音中提取独立声源的完整思路。内容以算法原理为线索,串联数据预处理、非线性函数选择、梯度… · 2026/11/5 2:13:48
FEKO .ffe数据ISAR成像:RD算法链路与参数避坑 简介:面向初学者的FEKO与ISAR成像全流程实践资料,聚焦雷达散射截面仿真到二维成像的衔接环节:先用FEKO对三维模型完成单站RCS仿真并导出.ffe数据,再由MATLAB按距离—多普勒(RD)算法成像,代码可直… · 2026/11/5 2:13:48
DCT数字水印嵌入与提取实战:从原理到代码避坑指南 简介:这份资源围绕离散余弦变换(DCT)数字水印的嵌入与提取流程展开,面向做数字水印方向毕业设计的学生及图像处理入门者,帮助其理解频域水印的基本原理与实现路径。压缩包共10个文件,以6个bmp图像素材、3个… · 2026/11/5 2:12:48
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38