Calvin's Tech Space

          成于堅忍,毀于浮躁

             :: 首頁 :: 聯系 :: 聚合  :: 管理
          int   main( int   argc ,  char  *argv[] ,   char  *envp[] )  
              main()函數一般用int或者void形的。我比較喜歡用int型定義main。因為在結束的時候可以返回給操作系統一個值以表示執行情況。  

              int   argc  
              這個東東用來表示你在命令行下輸入命令的時候,一共有多少個參數。比方說你的程序編譯后,可執行文件是test.exe  
              D:\tc2>test  
              這個時候,argc的值是1  
              但是  
              D:\tc2>test.exe   myarg1   myarg2  的話,argc的值是3。也就是命令名加上兩個參數,一共三個參數  

              char   *argv[]  
              這個東東用來取得你所輸入的參數  
              D:\tc2>test  
              這個時候,argc的值是1,argv[0]的值是   "test"  
              D:\tc2>test   myarg1   myarg2  
              這個時候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。  
              這個東東一般用來為程序提供非常重要的信息,如:數據文件名,等等。  
              如:copy   a.c   b.txt  
              這個時候,a.c和b.txt就是所謂的“非常重要的信息”。不指定這兩個文件,你沒法進行拷貝。  
              當你的程序用到argc和argv這兩個參數的時候,可以簡單地通過判斷argc的值,來看看程序的參數是否符合要求  

              char   *envp[]  
              這個東東相對來說用得比較少。它是用來取得系統的環境變量的。  
              如:在DOS下,有一個PATH變量。當你在DOS提示符下輸入一個命令(當然,這個命令不是dir一類的內部命令)的時候,DOS會首先在當前目錄下找這個命令的執行文件。如果找不到,則到PATH定義的路徑下去找,找到則執行,找不到返回Bad   command   or   file   name  
              在DOS命令提示符下鍵入set可查看系統的環境變量  
              同樣,在UNIX或者LINUX下,也有系統環境變量,而且用得比DOS要多。如常用的$PATH,$USER,$HOME等等。  
              envp保存所有的環境變量。其格式為(UNIX下)  
              PATH=/usr/bin;/local/bin;  
              HOME=/home/shuui  
              即:  
              環境變量名=值  
              DOS下大概也一樣。  
              環境變量一般用來為程序提供附加信息。如,你做了一個顯示文本的內容的程序。你想控制其一行中顯示的字符的個數。你可以自己定義一個環境變量(UNIX下)  
              %setenv   NUMBER   =   10  
              %echo   $NUMBER  
              10  
              然后你可以在程序中讀入這個環境變量。然后根據其值決定一行輸出多少個字符。這樣,如果你不修改環境變量的話,你每次執行這個程序,一行中顯示的字符數都是不一樣的  
              下面是一個例子程序  

              /* argtest.c */  
          #include<stdio.h>  
          int main(   int   argc   ,   char   *argv[]   ,   char   *envp[]   )  
          {  
              int   i;  

              printf(   "You   have   inputed   total   %d   argments\n"   ,   argc   );  
              for(   i=0   ;   i<argc   ;   i++)  
              {  
                  printf(   "arg%d   :   %s\n"   ,   i   ,   argv[i]   );  
              }  

              printf(   "The   follow   is   envp   :\n"   );  
              for(   i=0   ;   *envp[i]!='\0'   ;   i++   )  
              {  
                  printf(   "%s\n"   ,   envp[i]   );  
              }  
              return   0;  
          }  


          D:\>argtest   this   is   a   test   programe   of   main()'s   argments  
          You   have   inputed   total   9   argments  
          arg0   :   D:\TC\NONAME.EXE  
          arg1   :   this  
          arg2   :   is  
          arg3   :   a  
          arg4   :   test  
          arg5   :   programe  
          arg6   :   of  
          arg7   :   main()'s  
          arg8   :   argments  
          The   follow   is   envp   :  
          TMP=C:\WINDOWS\TEMP  
          TEMP=C:\WINDOWS\TEMP  
          PROMPT=$p$g  
          winbootdir=C:\WINDOWS  
          PATH=C:\WINDOWS;C:\WINDOWS\COMMAND  
          COMSPEC=C:\WINDOWS\COMMAND.COM  
          SBPCI=C:\SBPCI  
          windir=C:\WINDOWS  
          BLASTER=A220   I7   D1   H7   P330   T6  
          CMDLINE=noname   this   is   a   test   programe   of   main()'s   argments    
          -----------------------------------------------------------------------------------------
          命令行參數啊 argc   是參數的個數,argv[]是參數,argv[0]是文件名,argv[1]是第一個參數...  
          如你得exe文件名是:myprog.exe,那么  
          myprog   12   22   32  
          則argv[0]="myprog",argv[1]="12",argv[2]="22"...  


          posted on 2011-03-02 21:33 calvin 閱讀(3145) 評論(0)  編輯  收藏 所屬分類: C
          主站蜘蛛池模板: 葫芦岛市| 大方县| 沙田区| 迁西县| 江孜县| 古浪县| 城市| 桑日县| 淮阳县| 太谷县| 宁南县| 邵东县| 满城县| 平果县| 保定市| 惠东县| 五原县| 新泰市| 庐江县| 金川县| 赣榆县| 项城市| 安多县| 英吉沙县| 珲春市| 潼关县| 鄂尔多斯市| 陇川县| 独山县| 富宁县| 筠连县| 平昌县| 宁远县| 抚州市| 繁昌县| 江都市| 深泽县| 基隆市| 灌阳县| 金山区| 哈巴河县|