getopt

getopt

函式說明 getopt()用來分析命令行參數。參數argc和argv分別代表參數個數和內容,跟main()函式的命令行參數是一樣的。參數 optstring為選項字元串, 告知 getopt()可以處理哪個選項以及哪個選項需要參數,如果選項字元串里的字母后接著冒號“:”,則表示還有相關的參數,全域變數optarg 即會指向此額外參數。如果在處理期間遇到了不符合optstring指定的其他選項getopt()將顯示一個錯誤訊息,並將全域變數optopt設為“?”字元,如果不希望getopt()列印出錯信息,則只要將全域變數opterr設為0即可。

基本信息

getopt(分析命令行參數)

相關函式

表頭檔案 #include<unistd.h>

定義函式 int getopt(int argc,char * const argv[ ],const char * optstring);

extern char *optarg;

extern int optind, opterr, optopt;

getopt() 所設定的全局變數包括:

optarg——指向當前選項參數(如果有)的指針。 optind——再次調用 getopt() 時的下一個 argv 指針的索引。 optopt——最後一個未知選項。

補充說明

optstring中的指定的內容的意義(例如getopt(argc, argv, "ab:c:de::");)

1.單個字元,表示選項(如下例中的abcde各為一個選項)。

2.單個字元後接一個冒號:表示該選項後必須跟一個參數。參數緊跟在選項後或者以空格隔開。該參數的指針賦給optarg(如下例中的b:c:)。

3 單個字元後跟兩個冒號,表示該選項後可以跟一個參數,也可以不跟。如果跟一個參數,參數必須緊跟在選項後不能以空格隔開。該參數的指針賦給optarg。(如上例中的e::,如果沒有跟參數,則optarg = NULL)

範例

#include <stdio.h>
#include<unistd.h>
int main(int argc, char *argv[])
{
int ch;
opterr = 0;
while((ch = getopt(argc,argv,"a:bcde"))!= -1)
{
switch(ch)
{
case 'a': printf("option a:’%s’\n",optarg); break;
case 'b': printf("option b :b\n"); break;
default: printf("other option :%c\n",ch);
}
printf("optopt +%c\n",optopt);
}
return 0;
}

執行 $./getopt –b

option b:b

optopt +

執行 $./getopt –c

other option:c

optopt +

執行 $./getopt –a

other option :?

optopt +

執行 $./getopt –a12345

option a:’12345’

optopt +

相關詞條

相關搜尋

熱門詞條

聯絡我們