点击这里给我发消息 点击这里给我发消息

main函数带参数C程序设计模板

添加时间:2013-12-7
    相关阅读: 设计 模板 程序 C语言
 /* 一个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;
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册