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.运行结果如下图: