int 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 (= 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 
#include 

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 
     #include 
     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、付费专栏及课程。

余额充值