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;
}