[簡單明了]c c++ getopt函數__函數

來源:互聯網
上載者:User

轉自:http://speakingbaicai.blog.51cto.com/5667326/1074671


/*
原型:int getopt(int argc, char * const argv[], const char *optstring);
 
四個全域變數:
extern char *optarg;             //指向選項的參數的指標。
extern int optind,              //儲存位置,下一次調用getopt的時,從optind儲存的位置處重新開始檢查選項。
extern int opterr,        //當opterr=0時,getopt不向stderr輸出錯誤資訊。
extern int optopt;        //當命令列選項字元不包括在optstring中或者選項缺少必要的參數時,該選項儲存在optopt中。
 
關於optstring:
如:    optstring=ab:c::d::時,
1、ab:c::d::的意思是有四個選項-a -b -c -d;
2、其中b c d選項後面有冒號說明b c d後面必須跟參數;
3、b後一個冒號,則參賽和選項之間可有空格,也可沒有;
4、c d後面有兩個冒號,說明c d後面的參數必須緊跟在選項後面。
如:./a.out -a -b argOfb -cargOfc -dargOfd
如果寫成:./a.out -a -b argOfb -c argOfc -dargOfd 則c選項後的參數實際為null
 
getopt的使用時的主要注意點:
1、getopt每調用一次,返回一個選項,注意是選項不是參數;
2、optarg存放getopt所返回的選項後的參數,選項後沒有參數則為null(實際運行時沒有或者optstring中的選項後沒有:都視為null);
3、當再也檢查不到optstring所包含的選項時返回-1;
4、當檢查到不在optstring中的選項或缺少必要的參數時,返回。並將該選項存在optopt中。
 
總結:
在使用時,只需簡記getopt返回選項,optarg指向參數即可。
 
*/
#include <unistd.h>
 
int main(int argc, char **argv) 

    int opt;
    opterr = 0; 
    
    while( (opt = getopt(argc, argv, "ab:c::d::")) != -1 ) 
    { 
         switch(opt) 
          { 
              case 'a': 
                  printf(<

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.