man函數(shù)輸入?yún)?shù)分析

          argv: 指針的指針
           
          argc: 整數(shù)
           
          char **argv or char *argv[] or char argv[][]
           
           
          為了能形象的說(shuō)明這兩個(gè)參數(shù)的含義,我們先用一個(gè)實(shí)例來(lái)進(jìn)行講解:
           
           
          假設(shè)程序的名稱為test,當(dāng)只輸入test,則由操作系統(tǒng)傳來(lái)的參數(shù)為:
           
          argc = 1,表示只有一程序名稱;
           
          argc只有一個(gè)元素,argv[0]指向輸入的程序路徑及名稱:./ test
           
           
          當(dāng)輸入test para_1,有一個(gè)參數(shù),則由操作系統(tǒng)傳來(lái)的參數(shù)為:
           
          argc = 2,表示除了程序名外還有一個(gè)參數(shù);
           
          argv[0]指向輸入的程序路徑及名稱;
           
          argv[1]指向參數(shù)para_1字符串
           
           
          當(dāng)輸入test para_1 para_2 有2個(gè)參數(shù),則由操作系統(tǒng)傳來(lái)的參數(shù)為:
           
          argc = 3,表示除了程序名外還有兩個(gè)參數(shù);
           
          argv[0]指向輸入的程序路徑及名稱;
           
          argv[1]指向參數(shù)para_1字符串;
           
          argv[2]指向參數(shù)para_2字符串;
           
          以此類推………………
           
           
          void main( int argc, char *argv[] )
           
          char *argv[]: argv是一個(gè)指針數(shù)組,元素個(gè)數(shù)是argc,存放的是指向每一個(gè)參數(shù)的指針,第一個(gè)元素即argv[0]為程序運(yùn)行的全路徑名,從二個(gè)元素(argv[1])開(kāi)始,是每一個(gè)參數(shù)的名稱,最后一個(gè)元素為NULL。總的來(lái)說(shuō),即:
           
          * argv: 字符串?dāng)?shù)組
           
          argv[0] 為程序運(yùn)行的全路徑名
           
          argv[1] 為執(zhí)行程序名后的第一個(gè)字符串;
           
          argv[2] 為執(zhí)行程序名后的第二個(gè)字符串;
           
          ...
           
          argv[argc]為NULL。
           
          int argc: 表示argv的大小,是實(shí)際參數(shù)個(gè)數(shù)+1,其中+1是因?yàn)閍rgv[0]是編譯后的可執(zhí)行文件名
           
           
          main() 參數(shù) :
           
          Turbo C2.0啟動(dòng)時(shí)總是把a(bǔ)rgc、argv、env(存放環(huán)境變量)這三個(gè)參數(shù)傳遞給main()函數(shù), 可以在用戶程序中說(shuō)明(或不說(shuō)明)它們, 如果說(shuō)明了部分(或全部)參數(shù), 它們就成為main()子程序的局部變量。
           
          請(qǐng)注意: 一旦想說(shuō)明這些參數(shù), 則必須按argc, argv, env 的順序, 如以下的例子:
           
          main()
           
          main(int argc)
           
          main(int argc, char *argv[])
           
          main(int argc, char *argv[], char *env[])
           
          其中第二種情況是合法的, 但不常見(jiàn), 因?yàn)樵诔绦蛑泻苌儆兄挥胊rgc, 而不
           
          用argv[]的情況。
           
          以下提供一樣例程序EXAMPLE.EXE, 演示如何在main()函數(shù)中使用三個(gè)參數(shù):
           
           
          #include <stdio.h>
           
          #include <stdlib.h>
           
          main(int argc, char *argv[], char *env[])
           
          {
           
          int i;
           
          printf( "These are the %d command- line arguments passed to
           
          main:\n\n", argc);
           
          for( i = 0; i <= argc; i++)
           
          printf( "argv[%d]:%s\n", i, argv[i] );
           
          printf( "\nThe environment string(s)on this system are:\n\n");
           
          for( i = 0; env[i] != NULL; i++ )
           
          printf( " env[%d]:%s\n", i, env[i] );
           
          }
           
          ./EXAMPLE first "I’m a good boy" c "last " stop
           
          注意: 可以用雙引號(hào)括起內(nèi)含空格的參數(shù), 如本例中的: " argument with blanks"和"Last but one")。
           
          結(jié)果是這樣的:
           
          These are the 6 command-linearguments passed to main:
           
          argv[0]:./ EXAMPLE
           
          argv[1]:first
           
          argv[2]: I’m a good boy
           
          argv[3]:c
           
          argv[4]: last
           
          argv[5]:stop
           
          argv[6]:(NULL)

          posted on 2012-07-16 09:15 姚先進(jìn) 閱讀(276) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 军事| 灵川县| 大厂| 廉江市| 买车| 鄂尔多斯市| 蓬溪县| 新兴县| 荥阳市| 专栏| 吉安市| 镇康县| 长泰县| 南丹县| 嘉善县| 县级市| 嘉义县| 威海市| 宁陵县| 夏河县| 拉萨市| 绿春县| 桐梓县| 兴安县| 舒城县| 青田县| 石台县| 崇明县| 社会| 通海县| 读书| 潮州市| 通州市| 荔波县| 牡丹江市| 西昌市| 兴隆县| 长沙县| 甘德县| 克山县| 江安县|