1
我的代碼使用getopt從命令行獲取參數。我希望能夠接受三個必需的參數,以及一個可選的第四個參數。我們稱之爲分別爲輸入A和B:./main string1 string2 filename或./main -n 3 string1 string2 filename。你如何處理getopt失序的爭論?
我被告知可選參數不需要放在開頭,所以下面也應該可以。我們稱之爲輸入C:./main string1 string2 -n 3文件名。請注意,其他3個參數必須按此順序排列。這是我遇到麻煩的部分。
目前,我的代碼如下所示:
int c;
int n;
while ((c = getopt(argc,argv,"n:"))!=-1) {
printf("Loop\n");
switch (c) {
case 'n':
cvalue = optarg;
n = atoi(optarg);
break;
case '?':
break;
default:
break;
}
}
如果我輸入B,代碼工作,即雲在環路和輸入被正確分配到n。但是,如果我輸入C,它甚至不會進入循環,即它甚至不會在參數中註冊-n 3。這是預期的行爲,還是我錯過了我的代碼中的東西?我該如何解決這個問題?