我想解析一个选项ONLY ONCE和跳过它或发生错误当有两个不同的选项在参数中输入时相互冲突。
例如,
./a.out --install --remove //i dont want this to work...
我正在考虑将var设置为存储是否已读取选项 类似的东西:
case 'i': install_opt=1; install_arg=optarg; break;
稍后解析所有内容..
我完全走错了路吗? 如果是这样,请指导我如何正确使用getopt ....感谢:)
答案 0 :(得分:0)
您可以在开关案例选项中使用条件检查,如下例所示。
#include<stdio.h>
int select=0;
int main(int argc, char *argv[])
{
int opt;
while((opt = getopt(argc, argv, "ab")) != EOF)
{
switch(opt)
{
case 'a' :
if(select == 0)
{
printf("The a option is given\n");
select=1;
}
break;
case 'b' :
if(select == 0)
{
printf("The b option is given\n");
select=1;
}
break;
}
}
}
输出: -
$ ./a.out -a
给出了a选项
$ ./a.out -b
给出了b选项
$ ./a.out -b -a
给出了b选项
$ ./a.out -a -b
给出了a选项
在此示例中,同一命令行参数中的a或b选项仅在它到来时。
如果输入任何选项,则select变量变为1,否则为零,如果输入一个选项,则将select设置为1.因此,它使用if条件跳过下一个选项。
只有在跳过所有参数后才会获取第一个参数。 如果要产生错误,可以在if条件中使用else部分。