您可以使用條件,如下面例子中,交換機的情況下選擇內部檢查。
#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.out -b
在B選項給出
$ ./a.out -b -a
在B給出選項
$ ./a.out -a -b
的一個選項給出
在本例中在同一命令行參數的a或b的選擇,只一旦它來了。
如果輸入任何選項,select變量將變爲1,否則爲0,如果輸入了一個選項,則將select設置爲1.因此,它會使用if條件跳過下一個選項。
它只有在它跳過所有參數後才接受第一個參數。 如果你想產生錯誤,你可以在if條件中使用else部分。
是的,你正朝着正確的方向前進。您需要在內部保留已經解析/處理過的選項,並檢查軌道上的衝突選項 – Joao