命令行参数
1. 命令行参数概念
在执行程序时,除了程序名本身,我们还可以在后面跟上一些额外的'输入',这些输入就叫做命令行参数(Command-Line Arguments)。
你可以把它理解为:给程序的'启动指令'或'配置选项'。
生活中的例子:
- 你去餐厅吃饭,服务员问你:'请问你要什么主食?'你回答:'一碗米饭。'这里的'一碗米饭'就是你给服务员的'参数'。
- 你使用打车软件,输入'目的地:天安门',这个'天安门'就是你给打车软件的'参数'。
**编程中的例子:**当你在终端里输入以下命令时:
ls -l -a
ls是程序名。-l和-a就是传递给ls程序的命令行参数。ls程序根据这两个参数,执行了'以长格式(-l)列出当前目录下的所有 (包括隐藏文件) 文件'这个特定行为。
没有命令行参数,程序的行为是固定的。有了它,同一个程序就可以根据不同的输入,完成不同的任务。
2. argc
argc (Argument Count)
- 它是一个整数,代表命令行参数的总个数。
- 注意:程序名本身也被算作一个参数。所以
argc的值至少是 1。
3. argv
argv (Argument Vector)
- 它是一个字符串指针数组 (
char *argv[])。 argv[0]指向程序名的字符串(例如"./my_program")。argv[1]指向第一个命令行参数的字符串(例如"hello")。argv[2]指向第二个命令行参数的字符串(例如"world")。- ... 以此类推。
argv[argc]是一个 NULL 指针,标志着参数列表的结束。
4. argc 与 argv 的应用
下面创建两个文件来写测试用例。
运行以后我们就可以发现 argv[i] 会打印出 ./code 后面跟着的命令行参数 -a, -b, -c。
或许你会说,这有什么用呢?那我现在问一个问题,你如何使用不同的命令行参数匹配对应的功能?
使用 argc 与 argv 就行。
这里我们更改一下 code.c 的代码:
#include <stdio.h>
#include <string.h>
int main {
(argc != ) {
(, argv[]);
;
}
((argv[], ) == ) {
(, argv[]);
} ((argv[], ) == ) {
(, argv[]);
} ((argv[], ) == ) {
(, argv[]);
} {
(, argv[]);
}
;
}

