C语言main的参数;argc与argv

目录

前言

什么是命令行参数

argc与argv

argc (Argument Count)

argv (Argument Vector)

示例


前言

在C语言中,main函数的标准形式通常有两种:

int main(void)int main(int argc, char *argv[])

其中,argc 和 argv 是用于处理命令行参数的两个重要参数。本文将详细解释它们的含义和用法。

argc与argv

argc (Argument Count)

  • argc 是一个整数,表示传递给程序的命令行参数的数量。

  • 它至少为1,因为第一个参数总是程序的名称(即 argv[0])。

  • 例如,如果用户在命令行中输入 ./my_program arg1 arg2,那么 argc 的值将是3。

argv (Argument Vector)

  • argv 是一个指向字符指针的数组,每个指针指向一个字符串,表示一个命令行参数。

  • argv[0] 是程序的名称。

  • argv[1] 到 argv[argc-1] 是传递给程序的实际参数。

  • argv[argc] 是一个空指针(NULL),表示参数列表的结束。

什么是命令行参数

命令行参数​(Command-Line Arguments)是在启动程序时通过命令行界面传递给程序的输入参数,通常由程序名称和参数列表组成,例如:

./my_program arg1 arg2 arg3

其中“./my_program”是程序名称;“arg1 arg2 arg3”是参数列表。

参数列表打印示例

示例代码

#include <stdio.h>int main(int argc, char *argv[]) {//打印参数个数printf("Number of arguments: %d\n", argc);//打印参数列表for (int i = 0; i < argc; i++) {printf("Argument %d: %s\n", i, argv[i]);}return 0;
}

示例运行

./my_program arg1 arg2 arg3

示例输出

Number of arguments: 4
Argument 0: ./my_program
Argument 1: arg1
Argument 2: arg2
Argument 3: arg3

命令行参数作用何在?

有了命令行参数的存在,用户就可以在运行程序时指定某些选项,从而使程序根据不同的输入执行不同的操作。

我举个好理解的例子:输入参数1就是会员身份运行程序,里面会多很多功能,输入参数2就是以会员身份运行程序,许多功能使用受限制。

利用命令行参数指定程序功能示例

#include <stdio.h>
#include <string.h>int main(int argc, char *argv[])
{//输入的参数不符合要求,提示输入要求后直接退出运行if (argc != 2){printf("Usage:\n\t%s -number[1-2]\n", argv[0]);return 1;}//输入参数1,执行第一种功能if (strcmp("-1", argv[1]) == 0){printf("function 1\n");}//输入参数2,执行第二种功能else if (strcmp("-2", argv[1]) == 0){printf("function 1\n");}//输入的参数不符合要求,提示输入要求后直接退出运行else{printf("unknown!\n");printf("Usage:\n\t%s -number[1-2]\n", argv[0]);return 1;}return 0;
}

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

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

相关文章

实验一 进程控制实验

一、实验目的 1、掌握进程的概念&#xff0c;理解进程和程序的区别。 2、认识和了解并发执行的实质。 3、学习使用系统调用fork()创建新的子进程方法&#xff0c;理解进程树的概念。 4、学习使用系统调用wait()或waitpid()实现父子进程同步。 5、学习使用getpid()和getppi…

【Python Web开发】01-Socket网络编程01

文章目录 1.套接字(Socket)1.1 概念1.2 类型1.3 使用步骤 Python 的网络编程主要用于让不同的计算机或者程序之间进行数据交换和通信&#xff0c;就好像人与人之间打电话、发消息一样。 下面从几个关键方面通俗易懂地介绍一下&#xff1a; 1.套接字(Socket) 在 Python 网络编…

Git 配置 GPG 提交签名

使用 GPG 对 Git 提交进行签名&#xff0c;可以证明该提交确实是你本人提交的。这在团队协作和代码审核中非常有用&#xff0c;GitHub/GitLab 等平台也会显示 “Verified” 标签。 &#x1f9e9; 一、检查是否已安装 GPG gpg --version 如果未安装&#xff0c;可使用以下命令…

MySQL运维三部曲初级篇:从零开始打造稳定高效的数据库环境

文章目录 一、服务器选型——给数据库一个舒适的家二、系统调优——打造高性能跑道三、MySQL配置——让数据库火力全开四、监控体系——数据库的体检中心五、备份恢复——数据安全的最后防线六、主从复制——数据同步的艺术七、安全加固——守护数据长城 引言&#xff1a;从小白…

实践项目开发-hbmV4V20250407-跨平台开发框架深度解析与VSCode一站式开发实践

跨平台开发框架深度解析与VSCode一站式开发实践 在当今多端应用开发需求激增的背景下&#xff0c;跨平台开发框架成为了众多开发者的首选。本文将围绕React Native、Taro及其结合方案&#xff0c;以及Uni-app、MUI、Quasar等轻量级框架展开详细分析&#xff0c;并探讨如何在VS…

Android15沉浸式界面顶部有问题

Android15沉浸式界面顶部有问题 往往开发人员的手机没这么高级&#xff0c;客户或者老板的手机是Android15的。 我明明就设了状态栏透明&#xff0c;我的手机也没问题。但Android15是有问题的。 先看下有问题的界面&#xff1a; 解决方案&#xff1a; 处理1&#xff1a; if (…

uni-app 状态管理深度解析:Vuex 与全局方案实战指南

uni-app 状态管理深度解析&#xff1a;Vuex 与全局方案实战指南 一、Vuex 使用示例 1. 基础 Vuex 配置 1.1 项目结构 src/ ├── store/ │ ├── index.js # 主入口文件 │ └── modules/ │ └── counter.js # 计数器模块 └── main.js …

【STM32单片机】#11 I2C通信(软件读写)

主要参考学习资料&#xff1a; B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接&#xff1a;https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装&#xff1a;STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…

每天一道面试题@第一天

1&#xff1a;TCP和UDP的区别&#xff0c;TCP为什么是三次握手&#xff0c;不是两次&#xff1f; 因为TCP是全双工协议&#xff0c;区别在于TCP可靠&#xff0c;UDP不可靠&#xff0c;效率更高。 详解&#xff1a; TCP&#xff08;传输控制协议&#xff09;和 UDP&#xff08;…

一款强大的实时协作Markdown工具 | CodiMD 9.6K ⭐

CodiMD 介绍 CodiMD 是一个开源的实时协作 Markdown 笔记工具&#xff0c;它允许用户在任何平台上共同编辑 Markdown 文档。核心功能是实时协作&#xff0c;它允许多个用户同时编辑同一个文档&#xff0c;并实时看到彼此的更改。支持实时渲染预览&#xff0c;支持超多的富文本格…

若依如何切换 tab 不刷新

方法 如上图配置 菜单中选是否缓存&#xff1a;缓存 资料 前端手册 |RuoYi:

【浙江大学DeepSeek公开课】回望AI三大主义与加强通识教育

回望AI三大主义与加强通识教育 一、人工智能三大主义二、人工智能发展历程三、从 ChatGPT 到 DeepSeek四、人工智能通识教育五、人工智能的挑战与未来 一、人工智能三大主义 符号主义 &#xff1a;逻辑推理&#xff0c;将推理视为计算过程。如苏格拉底三段论&#xff0c;通过前…

边缘计算全透视:架构、应用与未来图景

边缘计算全透视&#xff1a;架构、应用与未来图景 一、产生背景二、本质三、特点&#xff08;一&#xff09;位置靠近数据源&#xff08;二&#xff09;分布式架构&#xff08;三&#xff09;实时性要求高 四、关键技术&#xff08;一&#xff09;硬件技术&#xff08;二&#…

C++——多态、抽象类和接口

目录 多态的基本概念 如何实现多态 在C中&#xff0c;派生类对象可以被当作基类对象使用 编程示例 关键概念总结 抽象类 一、抽象类的定义 基本语法 二、抽象类的核心特性 1. 不能直接实例化 2. 派生类必须实现所有纯虚函数才能成为具体类 3. 可以包含普通成员函数和…

初级达梦dba的技能水准

在x86环境&#xff08;windows、linux&#xff09;安装单机软件&#xff0c;安装客户端创建过至少20套数据库&#xff0c;优化参数并更新过正式许可会用逻辑导出导入以及dmrman备份了解manager工具的使用配置sqllog日志&#xff0c;并能解释输出内容能够分析因磁盘空间不足、内…

监控页面卡顿PerformanceObserver

监控页面卡顿PerformanceObserver 性能观察器掘金 const observer new PerformanceObserver((list) > {}); observer.observe({entryTypes: [longtask], })

智能座舱测试内容与步骤

智能座舱的测试步骤通常包括以下环节&#xff1a; 1.测试环境搭建与准备 • 硬件需求分析&#xff1a;准备测试车辆、服务器与工作站、网络设备以及传感器和执行器模拟器等硬件设备。 • 软件需求分析&#xff1a;选择测试管理软件、自动化测试工具、模拟软件和开发调试工具等。…

Redis——网络模型

目录 前言 1.用户空间和内核空间 1.2用户空间和内核空间的切换 1.3切换过程 2.阻塞IO 3.非阻塞IO 4.IO多路复用 4.1.IO多路复用过程 4.2.IO多路复用监听方式 4.3.IO多路复用-select 4.4.IO多路复用-poll 4.5.IO多路复用-epoll 4.6.select poll epoll总结 4.7.IO多…

电力系统中为什么采用三相交流电?

电力系统中为什么采用三相交流电 电力系统中采用三相交流电&#xff0c;主要是因为它在输电效率、设备使用、能量传输平稳性等方面相比单相交流或直流电具有显著优势。下面我详细解释一下原因&#xff1a; &#x1f31f; 1. 提高输电效率&#xff08;节省电缆材料&#xff09;…

python简介与入门

目录 python初始 python的优势 python的特性 python的应用领域 Linux环境中安装python 下载python3.11.6 安装依赖包 解压python压缩包 安装python 编译及安装 建立软连接 测试python3运行 设置国内pip更新源 更新pip版本&#xff08;必须更新&#xff09; wind…