本文转自徐飞翔的“[C语言朝花夕拾] C语言中的命令行输入参数判断”
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
在C语言中,我们的函数入口经常会有:
int main(int argc, char** argv) {
...
return 0;
}
类似这样的传入参数,这类型的参数是为了,用户在利用命令行调用该程序的时候,能够传入适合的参数去控制程序的特定行为。例如,假如现有程序:
#include <stdio.h>
int main(int argc, char** argv) {
printf("number of arg %d\r\n", argc);
int i = 0;
for (;i < argc;++i) {
printf("params = %s\r\n", argv[i]);
}
}
其中的a
rgc
是英文arguments counts
,即是参数计数的简称;argv
是arguments value
,即是参数值的简称。假如以上的程序命名为test
,那么编译完后,运行以下命令行:
./test -gpus 0,1,2,3
该命令的意图在于指定特定的gpu列表,那么将会输出:
number of arg 3
params = -gpus
params = 0,1,2,3
其中参数计数为3的原因是需要将./test
计入在数,而-gpus
,0,1,2,3
等分别用空格隔开的看成是不同的参数,都是字符串的格式(也即是char*
),需要后续用特定程序去处理和解析。