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

【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 介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 字符数字转整形函数 atoiatoi 简单实现 字符数字转整形函数 atoi 在 C 语言中&#xff0c;main 函数能够接收命令行参数。这些参数通过两个参数传递给 main 函数&#xff1a;int argc 和 char *argv[]。argc 是命令行参数的数量&a…...

全国超市数据可视化仪表板制作

全国超市消费数据展示 指定 Top几 客户销费数据展示 指定 Top几 省份销费数据展示 省份销售额数据分析 完整结果...

react native 总结

react app.js 相当与vue app.vue import React from react; import ./App.css; import ReactRoute from ./router import {HashRouter as Router,Link} from react-router-dom class App extends React.Component {constructor(props){super(props)}render(){return ( <…...

什么是自然语言处理(NLP)?自然语言处理(NLP)的概述

什么是自然语言处理&#xff1f; 自然语言处理&#xff08;NLP&#xff09;是人工智能&#xff08;AI&#xff09;和计算语言学领域的一个分支&#xff0c;它致力于使计算机能够理解、解释和生成人类语言。随着技术的发展&#xff0c;NLP已经从简单的模式匹配发展到了能够理解…...

共享旅游卡怎么使用?共享旅游卡的奥秘与魅力,解锁高效旅行的新方式

在共享经济的浪潮下&#xff0c;共享旅游卡逐渐崭露头角&#xff0c;成为众多旅行爱好者青睐的出行选择。如何有效利用这类卡片&#xff0c;使之成为节省成本、丰富旅行体验的利器呢&#xff1f; 本文将深入解析共享旅游卡的内涵、获取途径、使用要点&#xff0c;以及如何根据…...

使用yolov9来实现人体姿态识别估计(定位图像或视频中人体的关键部位)教程+代码

yolov9人体姿态识别&#xff1a; 相较于之前的YOLO版本&#xff0c;YOLOv9可能会进一步提升处理速度和精度&#xff0c;特别是在姿态估计场景中&#xff0c;通过改进网络结构、利用更高效的特征提取器以及优化损失函数等手段来提升对复杂人体姿态变化的捕捉能力。由于YOLOv9的…...

「14」四个步骤,让你在直播间轻松演义你的教案……

「14」窗口采集捕获指定程序的窗口画面 在 OBS 软件中&#xff0c;窗口采集功能可以用于捕捉特定应用程序或窗口的屏幕内容&#xff0c;以显示在直播窗口中&#xff0c;如PPT、思维导图、Word、Excel、AI、PS、腾讯会议、IPAD、手机画面等等显示窗口。 窗口采集在使用 OBS 直播…...

分解质因子

分解质因子 题目描述 将一个正整数分解质因数&#xff0c;例如&#xff0c;输入90&#xff0c;输出2 3 3 5。 输入 输入一个正整数n&#xff08;2<n<2000&#xff09;。 输出 从小到大输出n的所有质因子&#xff0c;每两个数之间空一格。 样例输入 20样例输出 2…...

iOS18系统中,苹果可能不再使用Siri,转用Gemini

生成式人工智能&#xff08;Generative AI&#xff09;是苹果公司近两年来默默投资的强大人工智能工具。 坊间流有多种传闻&#xff0c;官方最近终于曝光结果&#xff1a;苹果和谷歌正在谈判将 Gemini AI 引入 iPhone&#xff0c;预计将于今年在所有 iOS 18 设备上推出。 到目前…...

python笔记进阶--模块、文件及IO操作(1)

目录 一&#xff0e;模块 1.模块的导入和使用 1.1导入整个模块 1.2导入函数 1.3使用as给模块指定别名 2.常见标准库 2.1 import random&#xff1a; 2.2 import math&#xff1a; 2.3正则表达式处理 2.4turtle 二&#xff0e;文件及IO操作 1.文件 1.1绝对路径与相…...

单元测试框架 Junit

目录 什么是Junit&#xff1f; Junit的基础注解有哪些&#xff1f; 什么是参数化&#xff1f;参数化通过哪几种方式传输数据&#xff1f; 单参数 多参数 CSV文件获取参数 方法获取参数 测试用例执行顺序如何控制&#xff1f; 什么是断言assert&#xff1f;Assertions类…...

数电票怎么查询真伪|发票识别接口|发票查验接口|PHP接口文档

对于财务工作者而言&#xff0c;发票管理是一项即繁琐又十分重要的工作&#xff0c;尤其是在数字化电子发票快速普及的当下&#xff0c;发票识别、核验、查重等工作无疑增加了财务人员的工作难度。财务人员每天都要与大量的发票打交道&#xff0c;人工管理模式难免会出现手动录…...

外包干了一个月,忘记Git怎么使用了...

外包干了一个月&#xff0c;忘记Git怎么使用了… Git 是一个流行的版本控制系统&#xff0c;它允许开发人员跟踪和管理代码更改。在本篇文章中&#xff0c;我们将介绍 Git 的配置和使用命令&#xff0c;以帮助您更好地理解和使用这个强大的工具。 首先&#xff0c;让我们开始…...

【微服务篇】深入理解微服务网关原理以及Spring Gateway

微服务网关的作用 微服务网关在微服务架构中扮演着至关重要的角色&#xff0c;它主要负责请求的路由、组成服务间的通信桥梁、聚合不同服务的数据以及提供跨服务的统一认证机制。以下是微服务网关的几个主要作用&#xff1a; 请求路由: 微服务网关充当所有入站请求的入口点&a…...

循序渐进丨MogDB 对 Oracle DBLink兼容性增强

本特性自 MogDB 5.0.0版本开始引入&#xff0c;支持 Oracle DBLink语法&#xff0c;可以使用符号访问 Oracle 数据库中的表。 示 例 01 环境准备 MogDB 环境 已安装 MogDB 数据库。已安装oracle_fdw插件&#xff0c;具体安装方法参见oracle_fdw安装文档https://docs.mogdb.io/…...

【Python操作基础】——集合

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…...

蓝桥杯day15刷题日记

P8748 [蓝桥杯 2021 省 B] 时间显示 思路&#xff1a;好奇怪的橙题&#xff0c;简单的运算就解决了 #include <iostream> using namespace std; long long n; int main() {cin>>n;n/1000;int hn/3600%24;int mn%3600/60;int sn%3600%60;printf("%02d:%02d:%…...

AndroidStudio中一些实用插件

1.RainbowBrackets插件为圆括号、方括号和花括号内的代码添加了漂亮的彩虹色 2.CodeGlance类似于Sublime或Xcode&#xff0c;CodeGlance插件在编辑器中嵌入了代码迷你图。滚动条也有所增大。在CodeGlance预览文件的代码模式下&#xff0c;用户可以快速导航到目标处。 3.ADBWifi…...

计算机网络⑧ —— IP地址

IP位于TCP/IP参考模型的第三层&#xff0c;也就是⽹络层 ⽹络层的主要作⽤&#xff1a;实现主机与主机之间的通信&#xff0c;也叫点对点通信 问题1&#xff1a;⽹络层(IP)与数据链路层(MAC)有什么关系呢&#xff1f; MAC的作⽤&#xff1a;实现直连的两个设备之间通信。IP的…...

YOLOv5-小知识记录(一)

0. 写在前面 这篇博文主要是为了记录一下yolov5中的小的记忆点&#xff0c;方便自己查看和理解。 1. 完整过程 &#xff08;1&#xff09;Input阶段&#xff0c;图片需要经过数据增强Mosaic&#xff0c;并且初始化一组anchor预设&#xff1b; &#xff08;2&#xff09;特征提…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法

使用 ROS1-Noetic 和 mavros v1.20.1&#xff0c; 携带经纬度海拔的话题主要有三个&#xff1a; /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码&#xff0c;来分析他们的发布过程。发现前两个话题都对应了同一…...

学习 Hooks【Plan - June - Week 2】

一、React API React 提供了丰富的核心 API&#xff0c;用于创建组件、管理状态、处理副作用、优化性能等。本文档总结 React 常用的 API 方法和组件。 1. React 核心 API React.createElement(type, props, …children) 用于创建 React 元素&#xff0c;JSX 会被编译成该函数…...