命令行参数让同一个程序在启动时接收不同配置,而不需要修改源代码。入口可以写成 int main(int argc, char **argv):argc 是参数数量,argv 是参数字符串表。这里先把 argv 当作“可按下标读取的字符串序列”,指针细节留到后续章节。
argc 与 argv
argv[0] 通常保存启动程序时使用的名称,真正由用户追加的第一个参数位于 argv[1]。访问任何下标之前都要先检查 argc。参数不会自动变成数字或选项;程序必须自行解析并验证。
#include <stdio.h>
int main(int argc, char **argv) {
printf("argc = %d\n", argc);
for (int i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}./inspect Ada 3 --loud知识测验
题目
argc 表示什么?
互动实验
命令行参数实验室
访问权限免费
在模拟终端运行 ./inspect,自己添加参数,观察 argc 和 argv。支持空格、单双引号与反斜杠转义;不执行系统命令。
填入示例:
模拟终端 · inspect 已编译
输入命令并按 Enter 运行。↑ / ↓ 可浏览命令历史。
边界检查与转换
读取 argv[2] 需要 argc > 2。进行数字转换时,还要检查整个字符串是否成功转换,并限制允许范围。命令行参数只来自启动命令,本节不读取或写入任何文件。
知识测验
题目
读取 argv[2] 之前最重要的检查是什么?
动手练习
实现 repeat 命令
实现命令 ./repeat WORD COUNT。
- 要求 argc 恰好为 3,否则打印用法并返回非 0。
- 把 argv[2] 转换为整数,拒绝非数字以及 1–10 之外的值。
- 把 argv[1] 单独输出 COUNT 次。
- 测试 ./repeat hello 3 和一个错误输入。