getopt(分析命令行參數(shù))
相關(guān)函數(shù)表頭文件
#include<unistd.h>
定義函數(shù) int getopt(int argc,char * const argv[ ],const char * optstring);
函數(shù)說(shuō)明 getopt()用來(lái)分析命令行參數(shù)。參數(shù)argc和argv是由main()傳遞的參數(shù)個(gè)數(shù)和內(nèi)容,。參數(shù)optstring 則代表欲處理的選項(xiàng)字符串,。此函數(shù)會(huì)返回在argv 中下一個(gè)的選項(xiàng)字母,此字母會(huì)對(duì)應(yīng)參數(shù)optstring 中的字母,。如果選項(xiàng)字符串里的字母后接著冒號(hào)“:”,,則表示還有相關(guān)的參數(shù),全域變量optarg 即會(huì)指向此額外參數(shù),。如果getopt()找不到符合的參數(shù)則會(huì)印出錯(cuò)信息,,并將全域變量optopt設(shè)為“?”字符,,如果不希望getopt()印出錯(cuò)信息,,則只要將全域變量opterr設(shè)為0即可。
短參數(shù)的定義
getopt()使用optstring所指的字串作為短參數(shù)列表,,象"1ac:d::"就是一個(gè)短參數(shù)列表。短參數(shù)的定義是一個(gè)'-'后面跟一個(gè)字母或數(shù)字,,象-a, -b就是一個(gè)短參數(shù),。每個(gè)數(shù)字或字母定義一個(gè)參數(shù)。
其中短參數(shù)在getopt定義里分為三種:
1. 不帶值的參數(shù),它的定義即是參數(shù)本身,。
2. 必須帶值的參數(shù),它的定義是在參數(shù)本身后面再加一個(gè)冒號(hào),。
3. 可選值的參數(shù),,它的定義是在參數(shù)本身后面加兩個(gè)冒號(hào) ,。
在這里拿上面的"1ac:d::"作為樣例進(jìn)行說(shuō)明,其中的1,a就是不帶值的參數(shù),,c是必須帶值的參數(shù),,d是可選值的參數(shù)。
在實(shí)際調(diào)用中,,'-1 -a -c cvalue -d', '-1 -a -c cvalue -ddvalue', '-1a -ddvalue -c cvalue'都是合法的,。這里需要注意三點(diǎn):
1. 不帶值的參數(shù)可以連寫,象1和a是不帶值的參數(shù),,它們可以-1 -a分開寫,,也可以-1a或-a1連寫。
2. 參數(shù)不分先后順序,,'-1a -c cvalue -ddvalue'和'-d -c cvalue -a1'的解析結(jié)果是一樣的,。
3. 要注意可選值的參數(shù)的值與參數(shù)之間不能有空格,必須寫成-ddvalue這樣的格式,,如果寫成-d dvalue這樣的格式就會(huì)解析錯(cuò)誤,。
返回值 getopt()每次調(diào)用會(huì)逐次返回命令行傳入的參數(shù)。
當(dāng)沒(méi)有參數(shù)的最后的一次調(diào)用時(shí),,getopt()將返回-1,。
當(dāng)解析到一個(gè)不在optstring里面的參數(shù),或者一個(gè)必選值參數(shù)不帶值時(shí),,返回'?',。
當(dāng)optstring是以':'開頭時(shí),缺值參數(shù)的情況下會(huì)返回':',,而不是'?' ,。
范例
執(zhí)行:
|
|