Linux---命令行参数

一、命令行参数

在介绍命令行参数前,我想问大家一个问题,在以前写C/C++时,main 函数可不可以带参数?

答案是可以带的,int main(int argc, char* argv[]){},但平时写代码时也证明了,main 函数的参数可带可不带。我们要讨论的内容是带 int argc, char* argv[] 有什么意义?

我们不妨写一个C语言代码,将argv中的内容打印出来看看。

使用gcc编译,形成可执行程序progress

在运行可执行程序progress后,我们发现main函数的参数 int argc, char* argv[] 是用来存储命令行字符串和其下标的,在存储中,以空格作为分隔符将命令行字符串拆散成一个个字串,来存入argv这个字符串数组,数组中下标为0的(第一个)元素是程序的路径+名称,后面的元素是和该进程匹配的选项。

那它为什么要这么做?

我们借用下面这段代码来进行理解。

#include <stdio.h>
#include <unistd.h>

int main(int argc, char* argv[])
{
        if (argc != 2)
        {
                printf("Usage: $s -[a,b,c,d]\n", argv[0]);
                return 1;
        }
        if (strcmp(argv[1], "-a") == 0)
        {
                printf("this is function1\n");
        }
        else if (strcmp(argv[1], "-b") == 0)
        {
                printf("this is function2\n");
        }
        else if (strcmp(argv[1], "-c") == 0)
        {
                printf("this is function3\n");
        }
        else if (strcmp(argv[1], "-d") == 0)
        {
                printf("this is function4\n");
        }
        else
        {
                printf("no this function!!\n");
        }
}

运行同一个程序,加上不同的选项,就出现了不同的结果,这就说明:在同一个程序中,我们可以通过不同的选项,来执行同一个程序内的不同的功能,那这又有什么用呢?

不知道大家还记不记得在之前的基本指令学习篇:

https://blog.csdn.net/wangdongdong23/article/details/136420870?spm=1001.2014.3001.5502

中,我们就可以通过一个相同的指令加上不同的选项来实现不同的功能。

命令行参数的本质是交给我们程序的不同选项,用来定制不同的程序功能。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-30 10:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 10:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 10:04:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 10:04:02       20 阅读

热门阅读

  1. YOLOv8参数详解

    2024-03-30 10:04:02       30 阅读
  2. sql中如何添加数据

    2024-03-30 10:04:02       20 阅读
  3. go中匿名函数的使用

    2024-03-30 10:04:02       21 阅读
  4. 如何解决EventSource 删除单词的前置空格问题

    2024-03-30 10:04:02       16 阅读
  5. 缺失的第一个正数 - LeetCode 热题 17

    2024-03-30 10:04:02       16 阅读
  6. hanlp的使用

    2024-03-30 10:04:02       15 阅读
  7. MongoDB集成springboot

    2024-03-30 10:04:02       17 阅读