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