摘要:我们在开发C语言时,经常看到int main(int argc, char *argv[]),但是没有太多的关注于argc和argv这两个参数,其实它们有很多的作用呢。
编写一个计算器
为了简单起见,我在Ubuntu下编写了一个支持个位数“加、减”操作的计算器,我们待会通过这个实例向大家讲解argc和argv参数的作用。
先看使用操作
我们可以使用./calc程序,第一个参数传入运算符(+或-),第二个参数传入(第一个加数或者被减数),第三个参数传入(第二个加数或者减数),就可以得到运算结果。
来看代码(代码的写得很糟是为了简单起见,大家如果觉得有用可以自己改进)。
1.#include
2.
3.intmain(intargc,char*argv[])
4.{
5.inti=0,result=0;
6.charopt=0;
7.if(argc==1)
8.{
9.printf("PleaseEnterParameter\r\n");
10.return-1;
11.}
12.switch(argv[1][0])
13.{
14.case'+':
15.printf("%d+%d=%d\r\n",(argv[2][0]-'0'),(argv[3][0]-'0'),(argv[2][0]-'0')+(argv[3][0]-'0'));
16.break;
17.
18.case'-':
19.printf("%d-%d=%d\r\n",(argv[2][0]-'0'),(argv[3][0]-'0'),(argv[2][0]-'0')-(argv[3][0]-'0'));
20.break;
21.}
22.return0;
23.}
我们的运算数据和运算符都是都过argc和argv参数传递进来的。现在我们开始第二个实验向大家讲解argc和argv参数的作用。
二、编写一个打印argc和argv的程序
首先来看代码:
1.#include
2.
3.intmain(intargc,char*argv[])
4.{
5.inti=0;
6.printf("argc=%d\r\n",argc);
7.for(i=0;i
8.{
9.printf("argv[%d]=%s\r\n",i,argv[i]);
10.}
11.
12.return0;
13.}
我分别传入0个参数,1个参数,2个参数,大家来看实验结果:
我们在不传参数时,默认有1个参数,它的内容是字符串”./test”,也就是我们执行文件时的执行指令。
argc = argument cout,表示传入参数的个数;argv是一个字符串指针数组,表示传入参数的内容,我们可以根据argc中的值去判断字符串指针数组中的个数,每一个数组成员都是一个字符串指针地址,可以用printf打印出来。