C getopt_long_only没有别名

时间:2014-05-20 11:28:39

标签: c arguments

我有以下C struct long选项

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等。我想在上面的示例中使用该参数的完整字符串并取回参数的值。 / p>

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

修改: 当然下面的程序是错误的但我希望在交换机中有完整的参数名称而不是别名。

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

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

    }
}

我该怎么做?

由于

1 个答案:

答案 0 :(得分:4)

要获得与匹配参数对应的struct option,请使用您提供的long_index变量getopt_long()来索引long_options数组。名称字符串在那里匹配。

如果你真正想要的只是每个选项的符号名称,那么你可以在val的{​​{1}}字段中设置它。该值是从struct option调用返回的。

getopt_long()

最好从超出ASCII范围的值开始,以免与短选项(在这种情况下你不具备)或特殊字符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} }; 发生冲突。