【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 itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ