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

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.xdnf.cn/news/73315.html

相关文章:

  • Python爬虫实战:获取海口最近2周天气数据,为出行做参考
  • POSIX多线程,解锁高性能编程
  • 深度学习3.3 线性回归的简洁实现
  • 代码实战保险花销预测
  • AXOP38802: 400nA 超低功耗通用双通道运算放大器
  • JumpServer多用户VNC桌面配置指南:实现多端口远程访问
  • KDD2024 | BCGNN解读
  • 读文献先读图:韦恩图怎么看?
  • 第 2 篇:初探时间序列 - 可视化与基本概念
  • 【源码】【Java并发】【AQS】从ReentrantLock、Semaphore、CutDownLunch、CyclicBarrier看AQS源码
  • JFrog Artifactory 制品库命令行操作指南
  • Java虚拟机之GC收集器对比解读
  • 多线程初阶(1.2)
  • 爬虫学习——Item封装数据与Item Pipeline处理数据
  • 垂直机械硬盘与叠瓦机械硬盘的区别及数据恢复难度
  • Kubeflow 快速入门实战(三) - Qwen2.5 微调全流程
  • 影刀RPA - 简单易用且功能强大的自动化工具
  • mybatis plus 多条件查询注意查询条件顺序
  • 2025年渗透测试面试题总结-拷打题库09(题目+回答)
  • LangChain4j-第二篇 |实现声明式 AI 服务 AiService:简化 AI 集成新范式
  • Linux Wlan-四次握手(eapol)框架流程
  • Transformer到MoE:聚客AI大模型核心技术栈完全指南
  • 第一篇:从哲学到管理——实践论与矛盾论如何重塑企业思维
  • c++基础·列表初始化
  • Linux系统-cat命令/more命令/less命令
  • Kubernetes集群超配节点容量
  • MCP的发展历程
  • 批量创建同名文件夹并整理文件至对应文件夹
  • Day5-UFS总结
  • 基于vue框架的电脑配件网上商城18xsv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。