久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C語(yǔ)言getopt()函數(shù)的使用

 奔跑的瓦力 2016-04-06
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ì)返回':',,而不是'?' ,。

范例 

  1. #include <stdio.h>  
  2. #include <unistd.h>  
  3.  
  4. int main(int argc, int *argv[])  
  5. {  
  6.         int ch;  
  7.         opterr = 0;  
  8.         while ((ch = getopt(argc,argv,"a:bcde"))!=-1)  
  9.         {  
  10.                 switch(ch)  
  11.                 {  
  12.                         case 'a':  
  13.                                 printf("option a:'%s'\n",optarg);  
  14.                                 break;  
  15.                         case 'b':  
  16.                                 printf("option b :b\n");  
  17.                                 break;  
  18.                         default:  
  19.                                 printf("other option :%c\n",ch);  
  20.                 }  
  21.         }  
  22.         printf("optopt +%c\n",optopt);  
  23. }  

執(zhí)行:

  1. $ ./getopt -a  
  2. other option :?  
  3. optopt +a  
  4. $ ./getopt -b  
  5. option b :b  
  6. optopt +  
  7. $ ./getopt -c  
  8. other option :c  
  9. optopt +  
  10. $ ./getopt -d  
  11. other option :d  
  12. optopt +  
  13. $ ./getopt -abcd  
  14. option a:'bcd' 
  15. optopt +  
  16. $ ./getopt -bcd  
  17. option b :b  
  18. other option :c  
  19. other option :d  
  20. optopt +  
  21. $ ./getopt -bcde  
  22. option b :b  
  23. other option :c  
  24. other option :d  
  25. other option :e  
  26. optopt +  
  27. $ ./getopt -bcdef  
  28. option b :b  
  29. other option :c  
  30. other option :d  
  31. other option :e  
  32. other option :?  
  33. optopt +f  

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多