gpt4 book ai didi

c++ - 如何使用 optarg 获取多个值?

转载 作者:行者123 更新时间:2023-11-28 07:42:09 25 4
gpt4 key购买 nike

我想在争论后得到更多的 optargs,但我不知道该怎么做。我想像

这样调用我的程序
./test -a first second -b third

我现在只能在参数 -a 后获得一个值。当我尝试将两个或更多放在那里时,avalue 为 null。

我的代码:

   char *avalue = NULL;
char *bvalue = NULL;
while ((c = getopt (argc, argv, "a:b:")) != -1)
switch (c)
{
case 'a':
avalue = optarg;
break;
case 'b':
bvalue = optarg;
break;
case '?':
if (optopt == 'c')
fprintf (stderr, "Option -%c requires an argument.\n", optopt);
else if (isprint (optopt))
fprintf (stderr, "Unknown option `-%c'.\n", optopt);
else
fprintf (stderr,
"Unknown option character `\\x%x'.\n",
optopt);
return 1;
default:
abort ();
}

printf ("avalue = %s\nbvalue = %s\n",avalue, bvalue);

最佳答案

这种常规范式最多需要每个标志有一个参数。你不能改变它。

但是,根据您的 shell,您可以使用引号将多个标记“分组”到一个参数中:

./test -a "first second" -b third

这种分组将在您的 shell 内部进行,即在将参数发送到您的程序之前。

关于c++ - 如何使用 optarg 获取多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com