C getopt_long_仅不带别名

C getopt_long_仅不带别名,c,arguments,C,Arguments,我有以下C结构长选项 static struct option long_options[] = { {"argument1", required_argument, 0, 0 }, {"argument2", required_argument, 0, 0 }, {"argument3", required_argument, 0, 0 }, {0, 0, 0, 0} }; 我想在运行程序时使用这种格式 ./progra

我有以下C结构长选项

static struct option long_options[] = {
        {"argument1", required_argument, 0,  0 },
        {"argument2", required_argument, 0,  0 },
        {"argument3", required_argument, 0,  0 },
        {0, 0,  0, 0}
};
我想在运行程序时使用这种格式

./program -argument1=1 -argument2=test -argument3=test1 
我不希望使用该参数的别名(如果有的话),例如-a等。我希望使用该参数的完整字符串,如上面的示例所示,并收回该参数的值

在我在互联网上找到的所有例子中,他们都使用了参数的别名,这个别名只有一个字符

编辑: 当然,下面的程序是错误的,但我希望在开关中有完整的参数名,而不是别名

while ((opt = getopt_long_only(argc, argv,"", long_options, &long_index )) != -1)
{
    switch (opt) {

        case "argument1":
            printf("\n\n%s",optarg);
         break;

    }
}
我该怎么做


感谢要获得匹配参数对应的
struct选项
,请使用您提供的
getopt\u long()
变量
long\u index
索引到
long\u选项
数组中。名称字符串在那里匹配

如果您真正想要的只是每个选项的符号名,那么您可以在
struct option
val
字段中设置它。该值是从
getopt_long()
调用返回的

enum {
        OPT_ARGUMENT1 = 1000,
        OPT_ARGUMENT2,
        OPT_ARGUMENT3
};

static struct option long_options[] = {
        {"argument1", required_argument, 0,  OPT_ARGUMENT1 },
        {"argument2", required_argument, 0,  OPT_ARGUMENT2 },
        {"argument3", required_argument, 0,  OPT_ARGUMENT3 },
        {0, 0,  0, 0}
};

最好从ASCII范围之外的值开始,以免与短选项(本例中没有)或特殊字符冲突。getopt_long()返回。

要获得匹配参数对应的
struct选项,请使用您提供的
getopt_long()变量
索引到
长\u选项
数组中。名称字符串在那里匹配

如果您真正想要的只是每个选项的符号名,那么您可以在
struct option
val
字段中设置它。该值是从
getopt_long()
调用返回的

enum {
        OPT_ARGUMENT1 = 1000,
        OPT_ARGUMENT2,
        OPT_ARGUMENT3
};

static struct option long_options[] = {
        {"argument1", required_argument, 0,  OPT_ARGUMENT1 },
        {"argument2", required_argument, 0,  OPT_ARGUMENT2 },
        {"argument3", required_argument, 0,  OPT_ARGUMENT3 },
        {0, 0,  0, 0}
};

最好从ASCII范围之外的值开始,以免与短选项(本例中没有)或特殊字符冲突。
getopt_long()返回。

?是的,但我如何才能做到这一点。顺便说一句,我编辑了第一篇文章?是的,但我怎么能做到。顺便说一句,我编辑了第一篇文章