main函數帶參數C程式設計範本

來源:互聯網
上載者:User
/* 一個main含參程式的C語言設計範本,只需在結構體初始化中輸入各個參數的性質及內容,就可以自動將參數分揀入結構體中。           命令執行方式如:           程式名 -a 參數1 -b 參數2           程式名 -?[-h]          */       #include "stdafx.h"   #define MAX_PARA 6                         struct parameter   {    int ID;//參數編號    int content_num;//本參數後帶的選項數目    bool IShave_prefix;//暫只接受必須使用-xx之類的參數首碼。    char prefix[32];    char content[256];    bool IShave_default_c;    char default_content[256];    bool ISnot_optional;    bool ISinput;   };          struct parameter para_list[MAX_PARA]={    // 參數編號,參數選項數目,是否有參數首碼(如-s),參數首碼,參數選項內容,    // 是否存在預設值,預設值,是否必選參,是否已得到參數(根據使用者輸出才修改)           {1,1,true,"-s","",false,"",true,false}, //-s    {2,1,true,"-c","",false,"",true,false}, //-c            {3,1,true,"-k","",false,"",true,false}, //-k            {4,1,true,"-t","",true,"NORMAL",false,false}, //-t     {5,1,true,"-m","",false,"",false,false}, //-m     {6,1,true,"-p","",false,"",false,false}  //-p    };   int generate_parameter(int argc,char ** argv)   {    if( (argc==1) ||      ((argc==2) && ( strcmp(argv[1],"-h")==0 || strcmp(argv[1],"-H")==0 || strcmp(argv[1],"-?")==0 ) )     )     printf("is help");    else {     int i,j,k;     for(i=1;i<argc;i++)     {      for(j=0;j<MAX_PARA;j++)      {       if( strcmp(argv[i],para_list[j].prefix)==0 )//輸入的參數首碼是允許的,在列表在存在       {        if(para_list[j].ISinput)//之前已經有過這個參數了。        {         printf("The \"%s\" Can only input once.\n",para_list[j].prefix);         return(-1);        }        else//正常收錄參數        {         para_list[j].ISinput=true;         if(para_list[j].content_num>=(argc-i))//檢測所需的參數是否沒有完全輸入         {          printf("The \"%s\" incomplete.\n",para_list[j].prefix);          return(-1);         }                para_list[j].content[0]='\0';         for(k=0;k<para_list[j].content_num;k++)          sprintf(para_list[j].content,"%s%s",para_list[j].content,argv[i+1+k]);         i+=para_list[j].content_num;         para_list[j].ISinput=true;         break;//跳出for迴圈。        }       }      }      if(j>=MAX_PARA)//參數首碼輸入錯誤,如果存在沒有首碼的參數,應在此加入代碼      {       printf("The \"%s\" is error!\n",argv[i]);       return(-1);      }     }     //下列代碼對必選參數進行檢查。     for(i=0;i<MAX_PARA;i++)     {      if(para_list[i].ISnot_optional==true && para_list[i].ISinput==false) //必選項未輸入      {       printf("The \"%s\" must be input.\n",para_list[i].prefix);       return(-1);      }     }                  }    return 0;   }          int main(int argc, char ** argv)   {    if(generate_parameter(argc,argv)!=0)     return -1;    //使用者代碼    return 0;

本文出自 “張宇(資料恢複)” 部落格,請務必保留此出處http://zhangyu.blog.51cto.com/197148/159013

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.