位置:首頁 > 高級語言 > C語言教學 > C語言命令行參數

C語言命令行參數

這是可能在命令行中的一些值傳遞給C程序執行。特彆是從參數傳入,而不是外界硬編碼寫入這些值到代碼控製程序中,這些值被稱為命令行參數,很多時候,它們對程序很重要。

命令行參數使用main()函數的參數,其中argc是指傳遞參數的數量,argv[]是一個指針數組指向傳遞給程序的每個參數。下麵是一個簡單的例子,檢查命令行是否提供的任何參數,並相應地采取動作:

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   if( argc == 2 )
   {
      printf("The argument supplied is %s
", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Too many arguments supplied.
");
   }
   else
   {
      printf("One argument expected.
");
   }
}

當上麵的代碼被編譯,並與一個參數執行,它會產生以下結果。

$./a.out testing
The argument supplied is testing

當上述代碼被編譯並用兩個參數執行時,它產生了以下結果。

$./a.out testing1 testing2
Too many arguments supplied.

當上麵的代碼被編譯並冇有傳遞任何參數執行,它會產生以下結果。

$./a.out
One argument expected

應當指出的是argv[0]保存程序本身,argv[1]名稱是指向提供的第一命令行參數,以及* argv[n]是最後一個參數。如果冇有提供參數,argc隻有一個參數,如果傳遞一個參數,那麼argc設置為2。

通過所有用空格隔開的命令行參數,但如果參數本身具有的空間,那麼可以通過這樣的參數把內部用雙引號“”或單引號''分開。讓我們重新寫上麵的例子再一次,將打印程序的名稱,也將在雙引號內傳遞一個命令行參數:

#include <stdio.h>

int main( int argc, char *argv[] )  
{
   printf("Program name %s
", argv[0]);
 
   if( argc == 2 )
   {
      printf("The argument supplied is %s
", argv[1]);
   }
   else if( argc > 2 )
   {
      printf("Too many arguments supplied.
");
   }
   else
   {
      printf("One argument expected.
");
   }
}

當上麵的代碼被編譯以及帶一些空格,但裡麵的雙引號分隔一個參數執行,它會產生以下結果。

$./a.out "testing1 testing2"

Progranm name ./a.out
The argument supplied is testing1 testing2