首页 > 其他 > 详细

main函数参数传递模式

时间:2015-04-20 18:58:16      阅读:224      评论:0      收藏:0      [点我收藏+]

在控制台程序中,参数传递有两种模式:

  1. app.exe -x -n 模式

  2. app.exe -xn 模式

以下程序,可适用与以上两种模式的识别。

#include <stdio.h>
#include <stdlib.h>  //exit()头文件

int main(int argc,char *argv[])
{

	int c,x_Chosen = 0,n_Chosen = 0;
	bool bRet = true;

	//参数传递模式:*.exe -x -n (或) *.exe -xn均可用
	while(--argc > 0 && (*++argv)[0] == ‘-‘)  //*++argv == argv[1],为char*
		while(c = *++argv[0])  //此时的argv[0]为argv[1][0] == ‘-‘
			switch(c)
		{
			case ‘x‘:
				x_Chosen = 1;
				break;
			case ‘n‘:
				n_Chosen = 1;
				break;
			default:
				printf("find:illegal option %c\n",c);
				argc = 0;
				bRet = false;
				break;
		}
		
		
		if(argc == 0)
			printf("-xn后不带参数了\n");
		else if(argc == 1)
			printf("-xn后还带有一个参数\n");
		else
			printf("-xn后还带有不止一个参数\n");

		if(!bRet)
			//Terminate the app
			exit(0);

		return 0;

}

注:*++argv是一个指向参数字符串的指针,因此(*++argv)[0]是它的第一个字符(另一种有效形式是**++argv)。因为[]与操作数的结合优先级比*和++高,所以在上述表达式中必须使用圆括号,否则编译器将会把该表达式当作*++(argv[0])。



当参数较多时,可以采用位运算方法来识别传递进来的参数:

#define PARAM_T (1<<0)  //-t

#define PARAM_X (1<<1)  //-x

#define PARAM_N (1<<2)  //-n


//假设传递 -tx,则:

int nParamTotal = PARAM_T | PARAM_X ;

本文出自 “whatever957” 博客,请务必保留此出处http://whatever957.blog.51cto.com/6835003/1636162

main函数参数传递模式

原文:http://whatever957.blog.51cto.com/6835003/1636162

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!