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.****.net/wangdongdong23/article/details/136420870?spm=1001.2014.3001.5502

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

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

上一篇:算法题1两数之和


下一篇:uniapp 真机调试(mumu模拟器)