基本信息
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 +