- main函数的原型:
- int main( int argc, char *argv[ ], char *envp[ ] )
- {
- program-statements
- }
- 那这里是有三个参数的。
- 第一个参数:argc是个整型变量,表示命令行参数的个数(含第一个参数)。
- 第二个参数:argv是个字符指针的数组,每个元素是一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)。
- 第三个参数:envp是字符指针的数组,数组的每一个原元素是一个指向一个环境变量(字符串)的字符指针。
- 题目:使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
-
例如:输入test.exe -a 1 2执行1+2输出3
-
#define _CRT_SECURE_NO_WARNINGS 0 #include <stdio.h> #include <string.h> #include <stdlib.h> static void usage(const char *proc) //手册 { printf("Usage:\r\n\t%s [-a|-s|-m|-d] x y\n\n",proc); } int my_add(int x, int y) { return x + y; } int my_sub(int x, int y) { return x - y; } int my_mul(int x, int y) { return x * y; } int my_div(int x, int y) { if (y == 0) { printf("div data is zero!"); return -1; } return x / y; } //Linux使用说明: ./cal -a 1 2 int main(int argc, char *argv[]) //1.参数个数 2.参数数组的每个内容 { if (argc != 4) //若输入不正确,则打印手册 { usage(argv[0]); return 1; } int(*calp[4])(int, int) = { my_add, my_sub, my_mul, my_div }; //定义函数指针 int op = 0; if (strcmp(argv[1], "-a") == 0) //参数,选择计算方式,在数组的内容的第二个 { int op = 0; } else if (strcmp(argv[1], "-b") == 0) { int op = 1; } else if (strcmp(argv[1], "-m") == 0) { int op = 2; } else if (strcmp(argv[1], "-d") == 0) { int op = 3 ; } else { usage(argv[0]); return 2; } //两参数,在数组的内容的第三和第四个 int x = atoi(argv[2]); //atoi把字符串转化为整型 int y = atoi(argv[3]); int ret = (calp[op])(x, y); //调用函数指针 printf("result:%d\n", ret); return 0; }