從命令列傳遞的引數稱為命令列引數。這些引數由main()
函式來處理的。
要支援命令列引數,您需要更改main()
函式的結構,如下所示 -
int main(int argc, char *argv[] )
在這裡,argc
計算引數的數量。它將檔案名稱作為第一個引數。
argv []
包含引數的總數。第一個引數永遠是此程式的檔案名。
我們來看一下命令列引數的例子,用檔案名傳遞一個引數。建立一個原始檔: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上執行上面範例程式碼,得到以下結果 -
root@AYZ:~# gcc main-commandline.c
root@AYZ:~# ./a.out argc_value
Program name is: ./a.out
First argument is: argc_value
在Windows中從命令列執行以下程式:
F:\>cd worksp\clanguage\command-line-arguments\Debug
F:\worksp\clanguage\command-line-arguments\Debug>dir
驅動器 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 位元組
2 個目錄 53,178,052,608 可用位元組
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>
如果傳遞很多引數,它只會列印一個,如下:
root@AYZ:~# ./a.out hello I am Maxsu
Program name is: ./a.out
First argument is: hello
但是,如果您在雙引號內傳遞許多引數,則所有引數將被視為單個引數。如下 -
root@AYZ:~# ./a.out "hello I am Maxsu"
Program name is: ./a.out
First argument is: hello I am Maxsu
您可以編寫程式來列印所有引數。在這個程式中,我們只列印argv [1]
,這就是為什麼只列印一個引數的原因了,您可以根據需要使用或列印argv [2]
,argv [3]
,argv [4]....
等等。