在工作中经常会遇到将多个可选参数进行解析的场景,对新手来说,怎么来解析参数呢,下面以一个例子说明怎么解析
假如我们的命令行参数为test -t tel -a age tom
test为我们的程序,-t 后跟电话 -a 后面跟年纪, tom为姓名,没有前导符号
void parse(int argc, char *argv[])
{
int i = 1;
char *tel = NULL;
char *age = NULL;
char *name = NULL;
while (i < argc) {
if (strcmp("-a", argv[i]) == 0) {
if (i + 1 >= argc ) {
printf("参数不正确\n");
}
age = argv[i + 1];
i = i + 2;
} else if (strcmp("-t", argv[i]) == 0) {
if (i + 1 >= argc) {
printf("参数不正确\n");
}
tel = argv[i + 1];
i = i + 2;
} else {
if (NULL == name) {
name = argv[i++];
continue;
}
i++;
}
}
printf("name %s\n", name);
printf("tel %s\n", tel);
printf("age %s\n", age);
}
使用这种方法,可以不用指定各参数位置,比如,test tom -a age -t tel一样可以解析出来。