argc和argv,參數個數和參數值

argc:argument count  參數個數

argv:argument value 參數值

C/C++語言中的main函數,經常帶有參數argc,argv,如下:

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

這兩個參數的作用: argc 是指命令行輸入參數的個數(以空白符分隔),而 argv存儲了所有的命令行參數 ;

假如有一段程序是test.exe,如下所示

#include <stdio.h>

int main(int argc, char ** argv)
{
    int i;
    for (i=0; i < argc; i++)
        printf("Argument %d is %s.\n", i, argv[i]);

    return 0;
}

在命令行運行該程序(windows下的cmd窗口),(首先應該在命令行下用 cd 命令進入到 test.exe 文件所在目錄c:\123下)

分別嘗試運行命令爲:

test.exe和test.exe a b c d e

得到兩種結果,如上所示。

運行命令test.exe時,只有一個參數,argc=1 ,  argv[0]="test.exe";

運行命令test.exe a b c d e時,輸入了6個參數,argc=6 , argv[0]="test.exe"   ,  argv[1]= a  ,  argv[2]=b   ,  argv[3]=c   ,  argv[4]=d   ,  argv[5]= e  ;

 

將“電腦硬件信息.txt”拷貝至程序目錄,命令行加上該txt文件名,則運行結果如上所示。

=================================

main(int argc,char *argv[ ])

1.argc爲整數

2.argv爲指針的指針(可理解爲:char **argv or: char *argv[] or: char argv[][]   ,argv是一個指針數組

 注:main()括號內是固定的寫法。

 

3.下面給出一個例子來理解這兩個參數的用法:

 假設程序的名稱爲prog,

   當只輸入prog,則由操作系統傳來的參數爲:

   argc=1,表示只有一程序名稱。

   argc只有一個元素,argv[0]指向輸入的程序路徑及名稱:./prog

 

   當輸入prog para_1,有一個參數,則由操作系統傳來的參數爲:

   argc=2,表示除了程序名外還有一個參數。 

   argv[0]指向輸入的程序路徑及名稱。

   argv[1]指向參數para_1字符串。

 

   當輸入prog para_1 para_2 有2個參數,則由操作系統傳來的參數爲:

   argc=3,表示除了程序名外還有2個參數。

   argv[0]指向輸入的程序路徑及名稱。

   argv[1]指向參數para_1字符串。

   argv[2]指向參數para_2字符串。

 

4.void    main(    int    argc,    char    *argv[]    ) 

   char    *argv[]    :    argv 是一個指針數組,他的元素個數是argc,存放的是指向每一個參數的指針

/**************************************************************************
     > File Name: read_main_param.c
     > Author: HH
     > Purpose:讀取主函數中的參數
     > Created Time: 2020年06月08日 星期一 12時46分38秒
  ************************************************************************/

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

int main(int argc,char *argv[])
{
         printf("%s\n",argv[0]);//讀取可執行程序(包括路徑)

       /*讀取參數*/
        int i = 1;
         while(i < argc)
        {
                printf("%s\n",argv[i]);
                 i++;
         }
       //說明在dos和unix環境下,用""擴起來的表示其是一個字符串,代表着一個參數
         return 0;
 }

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章