W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
執(zhí)行程序時,可以從命令行傳值給 C 程序。這些值被稱為命令行參數(shù),它們對程序很重要,特別是當您想從外部控制程序,而不是在代碼內對這些值進行硬編碼時,就顯得尤為重要了。
命令行參數(shù)是使用 main() 函數(shù)參數(shù)來處理的,其中,argc 是指傳入?yún)?shù)的個數(shù),argv[] 是一個指針數(shù)組,指向傳遞給程序的每個參數(shù)。下面是一個簡單的實例,檢查命令行是否有提供參數(shù),并根據(jù)參數(shù)執(zhí)行相應的動作:
#include <stdio.h> int main( int argc, char *argv[] ) { if( argc == 2 ){ printf("The argument supplied is %s\n", argv[1]); } else if( argc > 2 ){ printf("Too many arguments supplied.\n"); } else{ printf("One argument expected.\n"); } }
使用一個參數(shù),編譯并執(zhí)行上面的代碼,它會產生下列結果:
$./a.out testing The argument supplied is testing
使用兩個參數(shù),編譯并執(zhí)行上面的代碼,它會產生下列結果:
$./a.out testing1 testing2 Too many arguments supplied.
不傳任何參數(shù),編譯并執(zhí)行上面的代碼,它會產生下列結果:
$./a.out One argument expected
應當指出的是,argv[0] 存儲程序的名稱,argv[1] 是一個指向第一個命令行參數(shù)的指針,*argv[n] 是最后一個參數(shù)。如果沒有提供任何參數(shù),argc 將為 1,否則,如果傳遞了一個參數(shù),argc 將被設置為 2。
多個命令行參數(shù)之間用空格分隔,但是如果參數(shù)本身帶有空格,那么傳遞參數(shù)的時候應把參數(shù)放置在雙引號 "" 或單引號 '' 內部。讓我們重新編寫上面的實例,有一個空間,那么你可以通過這樣的觀點,把它們放在雙引號或單引號""""。讓我們重新編寫上面的實例,向程序傳遞一個放置在雙引號內部的命令行參數(shù):
#include <stdio.h>
int main( int argc, char *argv[] ){
printf("Program name %s\n", argv[0]);
if( argc == 2 ){
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 ){
printf("Too many arguments supplied.\n");
}
else{
printf("One argument expected.\n");
}
}
使用一個用空格分隔的簡單參數(shù),參數(shù)括在雙引號中,編譯并執(zhí)行上面的代碼,它會產生下列結果:
$./a.out "testing1 testing2" Progranm name ./a.out The argument supplied is testing1 testing2
main 的兩個參數(shù)的參數(shù)名如下:
int main( int argc, char *argv[] )
并不一定這樣寫,只是約定俗成罷了。但是亦可以寫成下面這樣:
int main( int test_argc, char *test_argv[] )
任意你喜歡的名字。
但是大部分人還是寫成開頭那樣的,如下:
int main( int argc, char *argv[] )
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: