C getopt_long_仅不带别名
我有以下C结构长选项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
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()返回。?是的,但我如何才能做到这一点。顺便说一句,我编辑了第一篇文章?是的,但我怎么能做到。顺便说一句,我编辑了第一篇文章