函式說明 getopt()用來分析命令行參數。參數argc和argv分別代表參數個數和內容,跟main()函式的命令行參數是一樣的。參數 optstring為選項字元串, 告知 getopt()可以處理哪個選項以及哪個選項需要參數,如果選項字元串里的字母后接著冒號“:”,則表示還有相關的參數,全域變數optarg 即會指向此額外參數。如果在處理期間遇到了不符合optstring指定的其他選項getopt()將顯示一個錯誤訊息,並將全域變數optopt設為“?”字元,如果不希望getopt()列印出錯信息,則只要將全域變數opterr設為0即可。
基本介紹
- 中文名:分析命令行參數
- 外文名:getopt
- 表頭檔案:#include<unistd.h>
- 定義函式:int getopt
基本信息,補充說明,範例,
基本信息
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 +