下面是我的命令行参数的语法。
./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
。
男人 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
是指向在 as 中声明的结构选项数组的第一个元素的指针
struct option {
const char *name;
int has_arg;
int *flag;
int val;
};
(数组的最后一个元素必须用零填充(
如果longindex
不是 NULL,则指向一个变量,该变量设置为相对于 longopts
的长整型选项的索引。