getopt
getopt(分析命令行參數)
相關函數
表頭文件
#include<unistd.h>
定義函數:
int getopt(int argc,char * const argv[ ],const char * optstring);
extern char *optarg;
extern int optind, opterr, optopt;
函數說明 getopt()用來分析命令行參數。參數argc和argv是由main()傳遞的參數個數和內容。
參數optstring為選項字符串,告知 getopt()可以處理哪個選項以及哪個選項需要參數,如果選項字符串里的字母后接著冒號“:”,則表示還有相關的參數,
全域變量optarg 即會指向此額外參數。如果在處理期間遇到了不符合optstring指定的其他選項getopt()將顯示一個錯誤消息,并將全域變量optarg設為“?”字符,如果不希望getopt()打印出錯信息,則只要將全域變量opterr設為0即可。
getopt() 所設置的全局變量包括:
optarg——指向當前選項參數(如果有)的指針。
optind——再次調用 getopt() 時的下一個 argv 指針的索引。
optopt——最后一個已知選項。
補充說明下optstring中的指定的內容的意義(例如getopt(argc, argv, "ab:c:de::");
1.單個字符,表示選項,(如上例中的abcde各為一個選項)
2.單個字符后接一個冒號:表示該選項后必須跟一個參數。參數緊跟在選項后或者以空格隔開。該參數的指針賦給optarg。(如上例中的b:c:)
3 單個字符后跟兩個冒號,表示該選項后必須跟一個參數。參數必須緊跟在選項后不能以空格隔開。該參數的指針賦給optarg。(如上例中的e::)