像Turbo c++、VC++這些現(xiàn)成編譯環(huán)境 可以不用理解這些 argc,argv 那是用命令行編譯程序時就有用 主函數(shù)main中變量(int argc,char *argv[ ])的含義 我們平時定義主函數(shù)時通常的寫法為:int main( )或void main( ) 其實,int main( ) 只是 UNIX 及 Linux 默許的用法, main(int argc, char *argv[ ], char *env[ ])才是UNIX和Linux中的標準寫法。 * argc: 整數(shù),用來統(tǒng)計你運行程序時送給main函數(shù)的命令行參數(shù)的個數(shù) * argv: 字符串數(shù)組,用來存放指向你的字符串參數(shù)的指針數(shù)組,每一個元素指向一個參數(shù) argv[0] 指向程序運行的全路徑名 argv[1] 指向在DOS命令行中執(zhí)行程序名后的第一個字符串 argv[2] 指向執(zhí)行程序名后的第二個字符串 ... argv[argc]為NULL。 *env:字符串數(shù)組。env[ ]的每一個元素都包含ENVVAR=value形式的字符 串。其中ENVVAR為環(huán)境變量,value 為ENVVAR的對應值。 argc, argv,env是在main( )函數(shù)之前被賦值的,編譯器生成的可執(zhí)行文件,main( )不是真正的入口點,而是一個標準的函數(shù),這個函數(shù)名與具體的操作系統(tǒng)有關。 經(jīng)典小例子,對于理解argv[ ]函數(shù)很管用: #include ; int main(int argc, char *argv[ ]) { printf("%d
",argc); while(argc) printf("%s
",argv[--argc]); return 0; } 假設將其編譯為test.exe 在命令行下 〉test hello 得到的輸出結果為 2 hello test main(int argc, char*argv[ ]),其中argc是指變量的個數(shù),本例中即指test和hello(注意,命令test也算在內)這兩個變量,argc即為2 argv是一個char *的數(shù)組,其中存放指向參數(shù)變量的指針,此處argv[0]指向test,argv[1]指向hello 再例: #include #include int main(int argc,char *argv[ ]) { if(argc==1 || argc>2) {printf("請輸入想要編輯的文件名如:fillname");} if(argc==2) { printf("編輯 %s
",argv[1]); } exit(0) } 編譯該程序:gcc -o edit edit.c 運行:〉edit 結果:請輸入想要編輯的文件名如:fillname 運行:〉edit f1.txt 結果:編輯 f1.txt 執(zhí)行edit時,argc為1,argv[0]指向edit 而執(zhí)行edit f1.txt時,argc的值為2,argv[0]指向edit,argv[1]指向f1.txt