20-c语言main函数参数`argc` 和 `argv[]` 解析

argcargv[] 解析

argcargv[]main 函数的参数,用于处理命令行参数。

一、 示例命令行调用

./a.out 123 345
  • 解释
    • ./a.out 是程序名,也是第一个参数。
    • 123345 是运行时传递的额外参数。

二、main 函数定义

int main(int argc, char const *argv[])
{return 0;
}
  • 参数说明
    • argc(Argument Count):表示传递给程序的参数个数,包括程序名本身。所以在上面的示例中,argc 的值是 3
    • argv(Argument Vector):是一个字符串数组,存储每个参数的内容。

三、解析参数示例

#include <stdio.h>
#include <stdlib.h>int main(int argc, char const *argv[]) {// 打印参数个数printf("Number of arguments: %d\n", argc);// 打印每个参数for (int i = 0; i < argc; i++) {printf("Argument %d: %s\n", i, argv[i]);}// 将参数转换为整数并计算和if (argc >= 3) {int num1 = atoi(argv[1]); // 将第一个参数转换为整数int num2 = atoi(argv[2]); // 将第二个参数转换为整数int sum = num1 + num2;printf("Sum of %d and %d is %d\n", num1, num2, sum);} else {printf("Not enough arguments. Please provide two integers.\n");}return 0;
}
  • 解释
    • argc 用于确定传递的参数数量。
    • argv 用于访问每个参数的内容。
    • atoi 函数用于将字符串转换为整数。需要包含 <stdlib.h> 头文件。

四、 命令行输出示例

$ ./a.out 123 345
Number of arguments: 3
Argument 0: ./a.out
Argument 1: 123
Argument 2: 345
Sum of 123 and 345 is 468
  • 解释
    • 打印参数个数:Number of arguments: 3
    • 打印每个参数的内容:
      • Argument 0: ./a.out
      • Argument 1: 123
      • Argument 2: 345
    • 打印两个整数参数的和:Sum of 123 and 345 is 468

注意事项

  1. 参数类型argv 中的参数是字符串类型(char *),需要根据需要进行类型转换。
  2. 参数个数:使用 argc 检查参数个数,以确保程序不会因参数不足而出错。
  3. 参数位置argv[0] 总是程序名,实际参数从 argv[1] 开始。

五、常见用法示例

  • 读取文件名

    if (argc > 1) {const char *filename = argv[1];printf("Opening file: %s\n", filename);
    }
    
  • 处理标志参数

    for (int i = 1; i < argc; i++) {if (strcmp(argv[i], "--help") == 0) {printf("Usage: ./a.out [options]\n");}
    }
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.20 模拟赛总结 [邻项交换] + [决策单调性]

只放题解喽 题解 T1T2T3T4 T1 等价于维护差分数组&#xff0c;数据范围较小&#xff0c;map 套 vector 维护即可 更大的数据范围可以 hash 做 T2 神奇贪心 本题关键在于定序&#xff0c;考虑顺序确定后答案怎么求 设 f i f_i fi​ 表示 第 i i i 件衣服烘干完的时间&…

Result of ‘BigDecimal.setScale()‘ is ignored

在Java中&#xff0c;BigDecimal.setScale() 方法用于格式化小数点后的位数&#xff0c;并可以选择舍入模式。如果你看到 "Result of BigDecimal.setScale() is ignored" 这样的警告&#xff0c;可能是因为你调用了 setScale() 方法&#xff0c;但没有将返回的新 Big…

Linux内核处理系统调用过程

Linux内核处理系统调用的过程是操作系统中一个非常关键的部分&#xff0c;它允许用户空间的程序请求内核提供的服务。以下是系统调用处理的一般步骤和概念&#xff1a; 1. **用户空间到内核空间的切换**&#xff1a; - 用户空间的程序通过执行系统调用指令&#xff08;如in…

arm、AArch64、x86、amd64、x86_64 的区别

arm vs AArch64 vs amd64 vs x86_64 vs x86 的区别 当涉及到 CPU 的时候&#xff0c;有许多术语&#xff1a;AArch64、x86_64、amd64、arm 等等。了解它们是什么以及它们之间的区别。 当你查看数据表或软件下载页面时是否被 ARM、AArch64、x86_64、i386 等术语混淆&#xff1f;…

运放构成电压跟随器,反馈电阻作用;运放电流采集电路,单电源供电,TINA仿真

电压跟随器 使用运放构成电压跟随器可以减小负载对信号源的影响&#xff0c;还可以提高信号带负载的能力&#xff0c;这是因为运放的结构特性&#xff0c;输入电阻大&#xff0c;输出电阻小。 是否决定使用该电压跟随器&#xff0c;就要看信号源&#xff0c;以及负载的阻抗大小…

【视觉SLAM】 十四讲ch5习题

1.*寻找一个相机&#xff08;你手机或笔记本的摄像头即可&#xff09;&#xff0c;标定它的内参。你可能会用到标定板&#xff0c;或者自己打印一张标定用的棋盘格。 参考我之前写过的这篇博客&#xff1a;【OpenCV】 相机标定 calibrateCamera Code来源是《学习OpenCV3》18.…

kaggle竞赛宝典 | 时序表示学习的综述!

本文来源公众号“kaggle竞赛宝典”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;时序表示学习的综述! 1 介绍 本文综述了时间序列数据中的通用表示学习方法&#xff0c;提出了一种新颖的分类方法&#xff0c;并讨论了其对提高…

闪电般的代码提示:在PyCharm中消灭延迟

闪电般的代码提示&#xff1a;在PyCharm中消灭延迟 PyCharm是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了代码提示、自动完成等功能&#xff0c;极大地提高了开发效率。然而&#xff0c;在处理大型项目或复杂代码库时&#xff0c;代码提示可能…

Java 读取树状结构的.yaml文件

1. 编写yaml配置文件 以省市乡三级结构为例&#xff0c;配置文件如下&#xff1a; administrative:divisions:- code: BJname: 北京children:- code: BJ01name: 东城区children:- code: BJ0101name: 东华门街道- code: BJ0102name: 交道口街道- code: BJ0103name: 和平里街道…

【区块链+绿色低碳】巴中市生态价值核算创新应用 | FISCO BCOS应用案例

生态产品总值&#xff08;GEP&#xff09;&#xff0c;指一定区域生态系统为人类福祉和经济社会可持续发展提供的产品与服务价值总和&#xff0c;包 括供给产品价值、调节服务价值和文化服务价值。当前&#xff0c;推动生态产品价值有效转化存在“难度量、难抵押、难交易、 难变…

【手撕数据结构】拿捏单链表

目录 单链表介绍链表的初始化打印链表增加节点尾插头插再给定位置之后插入在给定位置之前插入 删除节点尾删头删删除给定位置的节点删除给定位置之后的节点 查找节点 单链表介绍 单链表也叫做无头单向非循环链表&#xff0c;链表也是一种线性结构。他在逻辑结构上一定连续&…

(Qt) 文件读写基础

文章目录 &#x1f5c2;️前言&#x1f4c4;ref&#x1f4c4;访问标记&#x1f5c3;️enum 标记 &#x1f5c2;️Code&#x1f4c4;demo&#x1f4c4;分点讲解&#x1f5c3;️继承体系&#x1f5c3;️打开/关闭&#x1f5c3;️写&#x1f5c3;️读 &#x1f5c2;️END&#x1f…

从零开始:构建基于深度学习的实时跌倒检测系统(UI界面+YOLO代码+数据集)

注意看文末的结局与声明 一、引言 1. 项目背景与动机 在老年人和高危职业环境中&#xff0c;跌倒是一种常见的事故&#xff0c;可能导致严重的伤害甚至致命。实时跌倒检测系统可以及时发现并报警&#xff0c;提供紧急救助。通过深度学习技术&#xff0c;可以提高跌倒检测的准…

Android14 - 前台Service、图片选择器 、OpenJDK 17、其他适配

前台服务 1. 指定前台服务类型 以 Android 14(API 级别 34)或更高版本为目标平台的应用,需要为应用中的每项前台服务指定服务类型,因为系统需要特定类型的前台服务满足特定用例。具体介绍如下: 在Android 10 在 <service> 元素内引入了 android:foregroundServiceT…

Java并发的笔记

打算记录自己的学习情况&#xff0c;尽量不摆烂&#xff0c;另外一件事要有始有终&#xff0c;要弄完 如果多个线程处理同一个变量&#xff0c;读跟写都保证不了 2024.7.22》》》》》》》》》》》》 2.1.1volatile的实现原理 volatile不会引起线程上下文的切换和调度 一致性更…

pycharm+pyqt6配置

1、pip install pyqt6 pyqt6-toools 2、pycharm配置 配置&#xff1a;designer Program&#xff1a;&#xff1a;D:\Python39\Lib\site-packages\qt6_applications\Qt\bin\designer.exe Working directory: $ProjectFileDir$ 配置&#xff1a;pyuic6.exe Program&#xff1a…

调度子系统在特定时间执行

时序逻辑调度器设计模式允许您安排Simulink子系统在指定时间执行。以下模型说明了这种设计模式。 时序逻辑调度器图表包含以下逻辑&#xff1a; 时序逻辑调度器的关键行为 时序逻辑调度器图表包含两个状态&#xff0c;它们以不同的速率调度函数调用子系统A1、A2和A3的执行&…

DVWA靶场超(详细教程)--跨站攻击(XSS+CSRF)

一、XSS 反射型xss 打开dvwa的Reflected Cross Site Scripting (XSS) &#xff08;1&#xff09;low等级 查看页面源码&#xff08;ctrlu&#xff09;该界面有提交按钮和输入框 在输入框随便输入点字符&#xff0c;点击提交 可以看见输入的helloword嵌入到界面中。 View sou…

PS启动提示Adobe Creative Cloud丢失或损坏。您可以尝试修复来解决这个问题,如何解决

一般为找到这个路径下C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS的Adobe Desktop Service.exe文件。如果不在C盘也可以直接搜索其他盘找到此文件。 直接删除此文件即可解决&#xff0c;如果删除不了可以进任务管理器先结束进程再删除。鼠标右键结束任…

DolphinScheduler安装教程

DolphinScheduler安装教程 前期准备工作 jdk 1.8mysql 5zookeeper 3.4.6hadoop 2.6psmisc yum -y install psmisc 解压安装包 # 将安装包apache-dolphinscheduler-2.0.8-bin.tar.gz放置/opt/download目录下 # 解压缩 tar -zxvf apache-dolphinscheduler-2.0.8-bin.tar.gz -C …