main函数带参数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;
}




本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/159013,如需转载请自行联系原作者
目录
相关文章
|
Dart
[Flutter]足够入门的Dart语言系列之函数:函数定义、调用、5种参数类型和main函数
函数(Function)也被称为方法(Method)。其最直观的理解就是数据中的函数,比如y=f(x),在编程中,f对输入x进行处理,返回结果y,就是一个函数......
775 0
[Flutter]足够入门的Dart语言系列之函数:函数定义、调用、5种参数类型和main函数
|
4月前
VS2015中main函数带参数运行
VS2015中main函数带参数运行
|
2月前
|
存储 编译器 程序员
探索C/C++ main函数传参:成为编程高手的关键步骤
探索C/C++ main函数传参:成为编程高手的关键步骤
54 1
|
5月前
|
存储 Shell Python
学Python,还不知道main函数吗
学Python,还不知道main函数吗
|
10月前
|
程序员 编译器 C语言
学C的第九天(深入学习函数:库函数、自定义函数、函数的参数、函数调用、练习、补充知识点)-1
1.函数是什么: 维基百科中对函数的定义:子程序 * 在计算机科学中,子程序(英语:
|
10月前
|
程序员
学C的第九天(深入学习函数:库函数、自定义函数、函数的参数、函数调用、练习、补充知识点)-2
5.5:练习(部分上一期做过,换成函数做法): (1).写一个函数可以判断一个数是不是素数:
|
10月前
|
存储 Java
【JavaSE专栏32】Java函数定义、调用和主函数
【JavaSE专栏32】Java函数定义、调用和主函数
222 0
【JavaSE专栏32】Java函数定义、调用和主函数
|
11月前
|
Python
【Python入门篇】——Python函数(函数介绍,函数的定义,函数的参数和函数的返回值)
【Python入门篇】——Python函数(函数介绍,函数的定义,函数的参数和函数的返回值)
191 0
|
11月前
|
C++
C++(main函数知识点)
C++(main函数知识点)
|
小程序
【小程序】声明式和编程式导航传参
【小程序】声明式和编程式导航传参
80 0
【小程序】声明式和编程式导航传参