命令行信息不仅对操作系统命令可用,它对所有程序都是可用的。为了能够访问这些命令行参数(C标准中称为程序参数),必须把main函数定义为含有两个参数的函数,这两个参数通常命名为argc和argv∶
int main(int argc,char *argv[])
{
……
}
argc("参数计数")是命令行参数的数量(包括程序名本身),argv("参数向量")是指向命令行参数的指针数组,这些命令行参数以字符串的形式存储。
argv[0[指向程序名,而从argv[1]到argv [argc-1]则指向余下的命令行参数。argv有一个附加元素,即argv [argc],这个元素始终是一个空指针。空指针是一种不指向任何地方的特殊指针。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <ctype.h>
#define ADD "add"
#define SUB "sub"
#define DIV "div"
#define MUL "mul"
int add(int,int);
int sub(int,int);
int divide(int,int);
int multiple(int,int);
int int_calculator(char *code,int,int);
int main(int argc, char *argv[])
{
if(argc!=4)
{
printf("usage: %s operation_name int_a int_b\n",argv[0]);
return -1;
}
else
{
int result=int_calculator(argv[1],atoi(argv[2]),atoi(argv[3]));
printf("result of %s %s %s = %d\n",argv[2],argv[3],argv[1],result);
return 0;
}
}
int add(int a,int b){return a+b;}
int sub(int a,int b){return a-b;}
int divide(int a,int b){return a/b;}
int multiple(int a,int b){return a*b;}
int int_calculator(char *code,int a, int b)
{
if(0==strcmp(code,ADD))
return add(a,b);
else if(0==strcmp(code,SUB))
return sub(a,b);
else if(0==strcmp(code,DIV))
return divide(a,b);
else if(0==strcmp(code,MUL))
return multiple(a,b);
else
return -1;
}
这个程序使用main函数的两个参数实现了 四则运算,其中我们需要的参数是四个,如果参数多于或者少于4个,程序不会正常执行。
- 命令行环境编译
gcc -o arg arg.c
,生成可执行文件arg.exe
- 输入相对应的四个参数
arg.exe add 2 3
如果参数少于或多于4个
更多内容可参考
Windows在cmd命令行环境下运行c程序
C语言第11周作业(字符串和指针、数组)
网友评论