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

有些.exe程序可以带参数运行,比如:ping localhost -t。
这里localhost,-t就是参数,main(int argc, char *argv[])就是为了让程序里面能使用参数,argc是argument count的缩写,表示参数的个数,argv是argument value的缩写,表示参数的值,argv是一个字符指针数组,每一个元素指向一个字符串,其中argv[0]指向程序的路径名,argv[1]指向第一个参数字符串。
需要注意的是,.exe程序的完整文件名也算在参数里面,所以ping localhost -t的argc是3。
如果需要在程序里面使用这些参数的话,可以模仿下面的代码:

int main(int argc, char *argv[])
{
    int i = 0;
    printf("argc: %d/n", argc);
    for(i = 0; i < argc; i++)
    {
        printf("Arg %d : %s/n", i + 1, argv[i]);
    }
    return 0;
}

程序运行结果是:

argc: 1
Arg 1 : C:/Program Files/Microsoft Visual Studio/MyProjects/a/Debug/a.exe
Press any key to continue
 
再看另一个例子:
 

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    printf("argc = %d/nargv[0] = %s/n", argc, argv[0]);
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    int f = 0;
    int g = 0;
    int i = 0;
    for (i = 1; i < argc; i++)
    {
        if (*(argv[i]) == '-')
        {
            switch (*(argv[i]+1))
            {
            case 'a':
                a = atoi(argv[++i]);
                break;
            case 'b':
                b = atoi(argv[++i]);
                break;
            case 'c':
                c = atoi(argv[++i]);
                break;
            case 'd':
                d = atoi(argv[++i]);
                break;
            case 'e':
                e = atoi(argv[++i]);
                break;
            case 'f':
                f = atoi(argv[++i]);
                break;
            case 'g':
                g = atoi(argv[++i]);
                break;
            default:
                break;
            }
        }
    }
    printf("The value of a is %d/n", a);
    printf("The value of b is %d/n", b);
    printf("The value of c is %d/n", c);
    printf("The value of d is %d/n", d);
    printf("The value of e is %d/n", e);
    printf("The value of f is %d/n", f);
    printf("The value of g is %d/n", g);
    return 0;
}

 
刚接触到这两个变量时,根本不知道它们是用来做什么的,我想很多人也跟我一样,刚看到这两个变量时也是稀里糊涂的。

其实: int main(int argc,char *argv[]) 是 UNIX 和 Linux 中的标准写法,而 int main() 只是 UNIX 及 Linux 默许的用法..

那究竟 argc,argv[] 有何之用呢?下面看个例子 edit.c 就会明白它们的用法了:

#include<unistd.h>
#include<stdio.h>

int main(int argc,char *argv[])
{
if(argc==1 || argc>2) {
printf("请输入想要编辑的文件名如:./edit fillen");
}
if(argc==2) {
printf("编辑 %sn",argv[1]);
}
exit(0)
}

编译该程序:gcc -o edit edit.c
运行:./edit
结果:请输入想要编辑的文件名如:./edit fille
运行:./edit edit.txt
结果:编辑 edit.txt

看到这里 argc,argv[] 如何用就很明白了,
argc 是外部命令参数的个数,
argv[] 存放各参数的内容,如上例:
执行 ./edit 时,argc 为1, argv[0] 为 ./edit .
而执行 ./edit edit.txt 时,argc 的值为 2, argv[0] 为 ./edit,argv[1] 为 edit.txt .
 
main()函数的几种参数类型:
     main()
     main(int argc)
     main(int argc, char *argv[])
     main(int argc, char *argv[], char *env[])
    其中第二种情况是合法的, 但不常见, 因为在程序中很少有只用argc, 而不
用argv[]的情况。 
    *env: 安符串数组。env[] 的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量如PATH或87。以下提供一样例程序EXAMPLE.EXE, 演示如何在main()函数中使用三个参数:
     /*program name EXAMPLE.EXE*/
     #include <stdio.h>
     #include <stdlib.h>
     main(int argc, char *argv[], char *env[])
     {
          int i;
          printf("These are the %d command- line arguments passed to
                  main:/n/n", argc);
          for(i=0; i<=argc; i++)
            printf("argv[%d]:%s/n", i, argv[i]);
          printf("/nThe environment string(s)on this system are:/n/n");
          for(i=0; env[i]!=NULL; i++)
               printf(" env[%d]:%s/n", i, env[i]);
     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值