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