C語言命令列引數


從命令列傳遞的引數稱為命令列引數。這些引數由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]....等等。