從命令行傳遞的參數(shù)稱為命令行參數(shù)。這些參數(shù)由main()
函數(shù)來處理的。
要支持命令行參數(shù),您需要更改main()
函數(shù)的結(jié)構(gòu),如下所示 -
int main(int argc, char *argv[] )
在這里,argc
計(jì)算參數(shù)的數(shù)量。它將文件名稱作為第一個參數(shù)。
argv []
包含參數(shù)的總數(shù)。第一個參數(shù)永遠(yuǎn)是此程序的文件名。
我們來看一下命令行參數(shù)的例子,用文件名傳遞一個參數(shù)。創(chuàng)建一個源文件:main-commandline.c,其代碼如下所示 -
#include <stdio.h>
void main(int argc, char *argv[] ) {
printf("Program name is: %s\n", argv[0]);
if(argc < 2){
printf("No argument passed through command line.\n");
}
else{
printf("First argument is: %s\n", argv[1]);
}
}
在Linux上執(zhí)行上面示例代碼,得到以下結(jié)果 -
root@AYZ:~# gcc main-commandline.c
root@AYZ:~# ./a.out argc_value
Program name is: ./a.out
First argument is: argc_value
在Windows中從命令行運(yùn)行以下程序:
F:\>cd worksp\clanguage\command-line-arguments\Debug
F:\worksp\clanguage\command-line-arguments\Debug>dir
驅(qū)動器 F 中的卷是 Others
卷的序列號是 0007-6F29
F:\worksp\clanguage\command-line-arguments\Debug 的目錄
2017/08/18 01:23 <DIR> .
2017/08/18 01:23 <DIR> ..
2017/08/18 01:23 37,376 command-line-arguments.exe
2017/08/18 01:23 291,652 command-line-arguments.ilk
2017/08/18 01:23 552,960 command-line-arguments.pdb
3 個文件 881,988 字節(jié)
2 個目錄 53,178,052,608 可用字節(jié)
F:\worksp\clanguage\command-line-arguments\Debug>command-line-arguments.exe test-arg
Program name is: command-line-arguments.exe
First argument is: test-arg
F:\worksp\clanguage\command-line-arguments\Debug>
如果傳遞很多參數(shù),它只會打印一個,如下:
root@AYZ:~# ./a.out hello I am Maxsu
Program name is: ./a.out
First argument is: hello
但是,如果您在雙引號內(nèi)傳遞許多參數(shù),則所有參數(shù)將被視為單個參數(shù)。如下 -
root@AYZ:~# ./a.out "hello I am Maxsu"
Program name is: ./a.out
First argument is: hello I am Maxsu
您可以編寫程序來打印所有參數(shù)。在這個程序中,我們只打印argv [1]
,這就是為什么只打印一個參數(shù)的原因了,您可以根據(jù)需要使用或打印argv [2]
,argv [3]
,argv [4]....
等等。