用main函数参数传值生成简易计算器

1.代码如下所示

int main(int argc, char* argv[])
{
	//容错判断
	if(argc != 4)
	{
		printf("忘记传递参数了 ./a.out 3 + 2\n");
		return -1;
	}
	int num1 = atoi(argv[1]);
	int num2 = atoi(argv[3]);
	char oper = *argv[2];//加上*,是为了取出值 '+'
	switch(oper)
	{
	case '+':
		printf("%d + %d = %d\n",num1,num2,num1+num2);
		break;
	case '-':
		printf("%d - %d = %d\n",num1,num2,num1-num2);
		break;
	case '*':
		printf("%d * %d = %d\n",num1,num2,num1*num2);
		break;
	case '/':
		printf("%d / %d = %d\n",num1,num2,num1/num2);
		break;
	}

	return 0;
}		   

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

1.3.在c语言学习初期,我们通常在编译器下打出一个“main + Tab”快捷键,就可以进入如下c框架:

在main()中 argc和argv就是main函数的参数,argc =arg+c=argument(参数)+c(count 个数),argv=arg+v=argument(参数)+value(值) )

argc:就是命令行的参事个数;(个数是整数,所以是int 型)

char* argv[] :是一个指针数组,也就是命令行所传递的参数的值

例如:在gcc 编译器上编译好,执行/a.out bbbb bbb.txt

int main(int argc, char* argv[])
{
    printf("argc is %d\n",argc);  //argc is 3, 命令行的参数个数包含 ./a.out
    printf("argv[0] ----> %s\n",argv[0]);//argv[0]的类型是char* "./a.out"
    printf("argv[1] ----> %s\n",argv[1]);//argv[1]的类型是char* "bbbb"
    printf("argv[2] ----> %s\n",argv[2]);/argv[2]的类型是char* "bbb.txt"
    return 0;
}

如果想简单的实现小型计算我们需要传递 数 操作符 数  那么

//argv[0] ---> "./a.out"
//argv[1] ---> "35"
//argv[2] ---> "+"    注意:   由于“+“是用双引号引用的,里边内存放的是‘+’,‘\0’.
//argv[3] ---> "50"

int num1 = atoi(argv[1]);
int num2 = atoi(argv[3]);
char oper = *argv[2];                / /加上*,是为了取出值 '+'  指向首地址的值

2.atoi函数的作用就是函数用来将字符串转换成整数(存放的都是字符串)

man atoi:可以查找出所在的头文件; #include<stdlib.h>

    switch(oper)
    {
    case '+':
        printf("%d + %d = %d\n",num1,num2,num1+num2);
        break;
    case '-':
        printf("%d - %d = %d\n",num1,num2,num1-num2);
        break;
    case '*':
        printf("%d * %d = %d\n",num1,num2,num1*num2);
        break;
    case '/':
        printf("%d / %d = %d\n",num1,num2,num1/num2);
        break;
    }

3.用switch进行计算输出

    //容错判断
    if(argc != 4)
    {
        printf("忘记传递参数了 ./a.out 3 + 2\n");
        return -1;
    }

argc 是传参的个数,在输入中如果漏掉一个数,参数个数就是3个,这样就是完善了程序。

4.运行结果如下图:

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值