我想在参数后得到更多的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);
最佳答案
这种常规格式最多每个参数都需要一个参数。您无法更改。
但是,根据您的外壳,您也许可以使用引号将多个标记“分组”为一个参数:
./test -a "first second" -b third
这种分组将在您的shell内部进行,即在将参数发送到您的程序之前进行。