是否可以使用getopt函数来解析:
./prog -L -U
同:
./prog -LU
这是我的尝试(不起作用):
while ((c = getopt(argc, argv, "LU")) != -1) {
switch (c) {
case 'L':
// L catch
break;
case 'U':
// U catch
break;
default:
return;
}
}
在这个简单的例子中只有2个参数,但在我的项目中,6个参数的所有组合都是必需的。例如:
-L
或-LURGHX
或-LU -RG -H
等。你能应付吗?或者我必须编写复杂的解析器来完成这个任务?
最佳答案
除了缺少一个大括号外,您的代码对我很有用:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv) {
int c;
while ((c = getopt(argc, argv, "LU")) != -1) {
switch (c) {
case 'L':
// L catch
printf("L\n");
break;
case 'U':
// U catch
printf("U\n");
break;
default:
break;
}
}
return 0;
}
$ ./a.out -LU
L
U
$ ./a.out -L
L
$