我有一个带有字符串文字的程序来指定可选的命令行参数.如何在 c 中处理这些可选的命令行参数



下面是我的命令行参数的语法。

./main [-var1 value] [-var2 value] [-var3 value]

var1var2var3是字符串。 例如:var1是AAA,var2是BBB,var3是CCC。

但是,对于具有单字符选项的类似情况,例如abc

如下所示
./main [-a value] [-b value] [-c value] 

可以使用getopt(argc, argv, "a:b:c:");。有没有类似的方法来处理我的程序的var1var2var3

男人 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 的长整型选项的索引。