首页 > 其他分享 >20-c语言main函数参数`argc` 和 `argv[]` 解析

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

时间:2024-07-22 18:55:41浏览次数:16  
标签:20 345 int Argument argv 函数参数 参数 argc

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");
        }
    }
    

标签:20,345,int,Argument,argv,函数参数,参数,argc
From: https://blog.csdn.net/qq_63831368/article/details/140617141

相关文章

  • 会声会影2024旗舰版重磅登场,视频编辑新体验!
    各位头条的朋友们,今天给大家带来一个好消息:会声会影2024旗舰版正式发布啦!会声会影一直以来都是视频编辑领域的佼佼者,而这次的2024旗舰版更是带来了众多令人惊喜的新功能和改进。首先,标题编辑功能全新升级,进入/中场/退出标题动态让文字更加灵动,合并标题编辑功能方便快捷,还......
  • 会声会影2024旗舰版重磅发布!快来看看有哪些新功能
    会声会影2024旗舰版是一款功能强大且易于使用的视频编辑软件,拥有众多特色功能,能帮助用户轻松创作出精彩的视频作品。以下是其主要功能介绍:会声会影全版本绿色安装包获取链接:(抓紧保存以防失效)https://pan.quark.cn/s/06e2f90a8526会声会影最新一键安装包下载如下:https://w......
  • 云原生周刊:Kubernetes v1.31 中的移除和主要变更|2024.7.22
    开源项目ArgoRolloutsArgoRollouts是一个Kubernetes控制器和一组自定义资源定义(CRDs),提供高级部署功能,例如蓝绿部署、金丝雀部署、金丝雀分析、实验以及渐进式交付功能给Kubernetes。ArgoRollouts可选地集成了Ingress控制器和服务网格,利用它们的流量塑形能力,在更新期......
  • P3572 [POI2014] PTA-Little Bird
    原题链接题解首先,考虑接下来往哪颗树飞是很困难的,因为当前的决策会影响之后的决策但是如果考虑到达当前树从哪里飞过来就比较好了,因为无后效性接着我们可以暴力做法,遍历每棵树从前\(k\)个树飞过来的值,然后取最小的那个,但是这样显然会超时,所以我们优化一下有哪些值得被优化......
  • 踩坑记录:windows11下使用 VS2022 和 PCL1.14.1 配置点云开发环境
    闲话不多说,具体在windows下下载PCL与解压pcl可以看https://www.yuque.com/huangzhongqing/pcl/这位大佬的文章,那我就具体说一下踩过点坑:踩坑点1:按照大佬的文章的步骤进行解压与下载,我的PCL环境下在了K盘中,但是最后不知怎么的我的openni2文件夹下在了C盘里,也就是说3rdparty文件夹......
  • 艾飞斯特智能锁400客服电话/全国维修总部电话(2024更新号码)
    400服务电话:400-117-1060(点击咨询)艾飞斯特智能锁400客服电话/全国维修总部电话(2024更新号码)艾飞斯特智能锁全国各售后服务热线号码2024已更新(2024已更新)        艾飞斯特智能锁售后服务维修电话:(1)400-117-1060(点击咨询)(2)400-117-1060(点击咨询)     ......
  • [极客大挑战 2019]BabySQL
    [极客大挑战2019]BabySQL判断类型SQL关键字绕过,这道题可以双写绕过。username=1'or1=1#password=1'or1=1#得到报错:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMariaDBserverversionfortherightsyntaxtousenear'1=......
  • 雅顾智能锁7-24H售后客服报修电话– (2024年维修点更新)
    400服务电话:400-117-1060(点击咨询)雅顾智能锁7-24H售后客服报修电话–(2024年维修点更新)雅顾智能锁全国各售后服务热线号码2024已更新(2024已更新)        雅顾智能锁售后服务维修电话:(1)400-117-1060(点击咨询)(2)400-117-1060(点击咨询)        ......
  • 格维智能锁维修点电话查询(2024更新号码)
    400服务电话:400-117-1060(点击咨询)格维智能锁维修点电话查询(2024更新号码)格维智能锁全国各售后服务热线号码2024已更新(2024已更新)        格维智能锁售后服务维修电话:(1)400-117-1060(点击咨询)(2)400-117-1060(点击咨询)        格维智能锁24小时......
  • 全壹智能锁400客服电话/全国维修总部电话(2024更新号码)
    400服务电话:400-117-1060(点击咨询)全壹智能锁400客服电话/全国维修总部电话(2024更新号码)全壹智能锁全国各售后服务热线号码2024已更新(2024已更新)        全壹智能锁售后服务维修电话:(1)400-117-1060(点击咨询)(2)400-117-1060(点击咨询)        全......