SOGO論壇
  登入   註冊   找回密碼
查看: 624|回覆: 0
列印 上一主題 下一主題

[技術文章] argc 與 argv [複製連結]

Rank: 3Rank: 3

狀態︰ 離線
跳轉到指定樓層
1
發表於 2012-7-23 08:45:51 |只看該作者 |倒序瀏覽
主程式 main() 有兩個引數 argc 與 argv,即函數 main 標題的定義為

        main( int argc, char *argv[] )

其作用是 執行該檔 及 所相隨的 option。
如果將一程式 file.c 編譯完之後, 產生一 執行檔 file.exe。 當執行 file.exe 如

        c:> file option1 option2 option3

則執行 file.exe 時, argc 的值為 4, argv 則 含 4 個字串,即
argv[0]="file"、 argv[1]="option1"、 argv[2]="option2"、 argv[3]="option3"。
如此一來 程式的設計, 可以有 較多的彈性。
例如, 於 DOS 下的指令 dir,我們就 可以有 多種選擇,例如

     dir *.*/w
     dir *.c/w /p

等。
檔案的 輸入 與 輸出 亦可不需 hardcoding, 於例 3 中, 將檔案名稱 file1.txt 及 file2.txt 放在程式裡面, 如此一來,檔案一改 程式 也要 跟著改,程式 變的 非常 沒有彈性。 因此,程式改成 例 4,就比較 有彈性。

例 4: 試設計一程式,其檔名為 copyFile.c, 如同 例 3, 用來 copy 一檔案 至 另一檔案。

   #include <stdio.h>
   void main(int argc, char *argv[])
   {   char c;
       int toScreen = 1;
       FILE *fpin, *fpout;

       if(argc < 2 || argc > 3)
       {  printf("The correct format is: copyFile file1 file2\n");
          exit(1);
       }

       fpin = fopen(argv[1], "r");
       if( !fpin )
       {   printf("The file: %s is not found!\n", argv[1]);
           return;
       }
       if(argc == 3)
       {  fpout = fopen(argv[2], "w");
          if( !fpout )
          {   printf("The file: %s is not found, or no available space!\n", argv[2]);
              return;
          }
          toScreen = 0;
       }

       while( (c=getc(fpin)) != EOF)
       {   if( toScreen )
              putchar(c);
           else
              putc(c, fpout);
       }

       fclose(fpin);
       if( !toScreen)
          fclose(fpout);

喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-4-28 11:15

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部