原创 关于main函数的argv和envp参数 (转帖)

2008-7-22 08:38 4685 8 8 分类: MCU/ 嵌入式

在看了一个把关于MAIN函数的argv和envp参数的比较详细的帖子,这里转贴一下.说的比较清楚哦!(好贴要转,发扬光大,学习共享)


每一C   程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。  
  1.   main()   参数  
  在Turbo   C2.0启动过程中,传递main()函数三个参数:argc,argv和env。  
  *   argc:   整数,为传给main()的命令行参数个数。  
  *   argv:   字符串数组。  
  在DOS   3.X   版本中,argv[0]   为程序运行的全路径名;  
  对DOS   3.0   以下的版本,argv[0]为空串("")   。  
  argv[1]   为在DOS   命令行中执行程序名后的第一个字符串;  
  argv[2]   为执行程序名后的第二个字符串;  
  ...  
  argv[argc]为NULL。   *env:   字符串数组。env[]   的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量如PATH或87。value   为ENVVAR的对应值如C:\DOS,C:\TURBOC(对于PATH)   或YES(对于87)。    
   
    TurboC2.0启动时总是把这三个参数传递给main()函数,可以在用户程序中说明(或不说明)它们,如果说明了部分(或全部)参数,它们就成为main()子程序的局部变量。   请注意:一旦想说明这些参数,则必须按argc,argv,   env的顺序,如以下的例子:  
   
  main()  
  main(int   argc)  
  main(int   argc,   char   *argv[])  
  main(int   argc,   char   *argv[],   char   *env[])  
  其中第二种情况也是合法的,但不常见,因为在程序中很少有只用argc,而不用argv[]的情况。  
  以下提供一样例程序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);  
  printf("\nThe   environment   string(s)on   this   system   are:   \\n\n");  
  for(i=0;   env!=NULL;   i++)  
  printf("   env[%d]:%s\n",   i,   env);  
  }  
  如果在DOS   提示符下,按以下方式运行:  
   
  EXAMPLE.EXE:   C:\example   first_argument   "argument   with   blanks"   3   4 "last   butone" stop!    
   
  注意:可以用双引号括起内含空格的参数,如本例中的:"argument with   blanks"和"Last   but   one")。    
   
  应该提醒的是:传送main()   函数的命令行参数的最大长度为128个字符   (包括参数间的空格),这是由DOS   限制的

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条