C语言:main函数参数解析。编写程序可以通过接收参数实现简易整数计算器。

一.main函数参数解析

1.main函数的原型

int main(int argc,char *argv[],char *envp[])
{
   program-statements
}

2.各个参数

1.第一个参数:argc
argc是一个整型变量,表示命令行参数的个数(含第一个参数)。
2.第二个参数:argv
argv是一个字符指针的数组,每一个元素是一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)。
argv数组中的第一个元素指向的是可执行程序的名称。最后一个元素为空指针(NULL),空指针表示数组结束。
3.第三个参数:envp
envp是一个字符指针的数组,数组的每一个元素是指向一个环境变量(字符串)的字符指针。
envp的最后一个元素为空指针(NULL)。

二.通过命令行参数实现简易计算器

1.题目要求

使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。

例如:命令行参数输入:test.exe -a 1 2
执行1+2输出3

2.具体代码

#include 
#include 
#include 
int Add(int x, int y)//加法
{
	return x + y;
}
int Sub(int x, int y)//减法
{
	return x - y;
}
int Mul(int x, int y)//乘法
{
	return x * y;
}
int Div(int x, int y)//除法
{
	return x / y;
}
int main(int argc,char* argv[],char* envp[])
{
	int ret = 0;
	if (argc != 4)//判断参数是否有误
	{
		printf("参数有误:argc=%d\n", argc);
		return 0;
	}
	switch (*(argv[1] + 1))//判断参数部分是要执行什么计算
	{
	case 'a':
	    //输入的命令行参数为字符
	    //所以这里需要将两个参数变为对应的整型(atoi函数)
		ret = Add(atoi(argv[2]), atoi(argv[3]));
		break;
	case 's':
		ret = Sub(atoi(argv[2]), atoi(argv[3]));
		break;
	case 'm':
		ret = Mul(atoi(argv[2]), atoi(argv[3]));
		break;
	case 'd':
		ret = Div(atoi(argv[2]), atoi(argv[3]));
		break;
	}
	printf("%d\n", ret);
	system("pause");
	return 0;
}

你可能感兴趣的:(C语言)