以下是我的命令行参数的语法。
./main [-var1 value] [-var2 value] [-var3 value]
var1
,var2
和var3
是字符串。
例如:var1
是aaa,var2
是bbb,var3
是ccc。
但是对于具有单个字符选项的类似情况,例如a
,b
和c
,如下所示
./main [-a value] [-b value] [-c value]
可以使用 getopt(argc, argv, "a:b:c:");
。是否有类似的方法来处理我的计划var1
,var2
和var3
。
答案 0 :(得分:4)
man getopt是你的朋友!
getopt
是仅处理单个字母选项的历史函数,但它是使用两个随附广告进行扩展的:
getopt_long
:接受以单个破折号(-a
)开头的单个字母选项命令或以两个(--action
)getopt_long_only
:接受以一个或两个破折号开头的多字母选项(--action
或-action
)(以下是手册页摘录)
后两者的签名是:
int getopt_long(int argc, char * const argv[],
const char *optstring,
const struct option *longopts, int *longindex);
其中longopts
是指向以
struct option {
const char *name;
int has_arg;
int *flag;
int val;
};
(数组的最后一个元素必须用零填充)
如果longindex
不为NULL,则指向一个变量,该变量设置为相对于longopts
的long选项的索引。