【ARM 嵌入式 C 入门及渐进 18 -- 字符数字转整形函数 atoi 介绍】

2024-03-28 04:04

本文主要是介绍【ARM 嵌入式 C 入门及渐进 18 -- 字符数字转整形函数 atoi 介绍】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


请阅读【嵌入式开发学习必备专栏 】


文章目录

    • 字符数字转整形函数 atoi
      • atoi 简单实现

字符数字转整形函数 atoi

在 C 语言中,main 函数能够接收命令行参数。这些参数通过两个参数传递给 main 函数:int argcchar *argv[]argc 是命令行参数的数量,argv 是参数的数组,其中 argv[0] 是程序的名称,argv[1]argv[argc-1] 是命令行传递的参数。
如果你想要接收三个参数并将它们作为数字字符串转换为整数,你可以这样写 main 函数:

#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[]) 
{if (argc != 4) { // 程序名称 + 3 个参数printf("Usage: %s num1 num2 num3\n", argv[0]);return 1;}// 将参数字符串转换为整数int num1 = atoi(argv[1]);int num2 = atoi(argv[2]);int num3 = atoi(argv[3]);// 使用转换后的整数printf("The numbers are: %d, %d, %d\n", num1, num2, num3);// 你的逻辑代码...return 0;
}

在这个示例中,atoi 函数被用来将命令行参数(字符串)转换为整数。请注意 atoi 函数不会报告数字字符串转换失败的情况,如果传入的字符串不是有效的数字表示,它将返回 0。如果你需要更健壮的错误检查,请使用 strtolsscanf 等函数代替。
编译并运行这个程序,你可以这样调用它:

./your_program 123 456 789

这里,your_program 是你的可执行文件的名称,123, 456, 789 是你传递给程序的三个数字字符串参数。程序将输出:

The numbers are: 123, 456, 789

确保你的程序能够处理非数字字符串的情况,如果需要,可以添加适当的错误检查。

atoi 简单实现

atoi (ASCII to Integer)是一个将字符串转换为整数的 C 语言标准库函数。以下是 atoi 函数的一个简单实现,它模拟了标准库函数的基本行为:

#include <stdio.h>
#include <ctype.h>
int my_atoi(const char *str) {int result = 0;int sign = 1;// 跳过前面的空白字符while (isspace((unsigned char)*str)) {str++;}// 检查正负号if (*str == '-') {sign = -1;str++;} else if (*str == '+') {str++;}// 转换数字部分while (isdigit((unsigned char)*str)) {result = result * 10 + (*str - '0');str++;}return sign * result;
}
int main() {char str[] = "  -12345";int val = my_atoi(str);printf("%d\n", val);return 0;
}

在这个实现中,my_atoi 函数首先跳过任何空白字符,然后检查一个可选的正负号。接着,它开始处理字符串中的数字字符,将每个字符转换为对应的数字并加到结果中。一旦遇到非数字字符,就停止处理。

这个简单的实现不处理溢出,也不处理非法输入字符串(如包含非数字字符的字符串)。标准的 atoi 函数通常会有更复杂的错误检查和行为,以处理各种边界情况和溢出。如果需要处理溢出,通常会使用 strtolstrtoll 函数,它们提供了额外的错误检查功能。

这篇关于【ARM 嵌入式 C 入门及渐进 18 -- 字符数字转整形函数 atoi 介绍】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854386

相关文章

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN