首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言 main 函式參數詳解:argc、argv 與 envp 完整解析

     編輯:關於C語言

標準 main 簽名

int main(int argc, char *argv[])
int main(int argc, char *argv[], char *envp[]) // 擴展:環境變數

參數含義

  • argc (argument count):命令列參數總數(含程式名)。
  • argv (argument vector):字串指標陣列,長度 argc。
    • argv[0]:程式名稱(可能含路徑)。
    • argv[1] ... argv[argc-1]:用戶輸入的實際參數。
  • envp (environment pointer):環境變數字串陣列,格式 "NAME=VALUE",以 NULL 結尾。

實際範例

編譯為 test.exe,執行:

test.exe aaaa bbb ccc ddd

結果:

argc = 5
argv[0] = "test.exe"   (或完整路徑)
argv[1] = "aaaa"
argv[2] = "bbb"
argv[3] = "ccc"
argv[4] = "ddd"

常見應用模式

// 遍歷參數
for (int i = 0; i < argc; ++i)
    printf("argv[%d] = %s\n", i, argv[i]);

// 參數數量檢查
if (argc != 3) {
    fprintf(stderr, "Usage: %s <input> <output>\n", argv[0]);
    return 1;
}

// 解析環境變數 (envp)
for (int i = 0; envp[i]; ++i)
    printf("ENV: %s\n", envp[i]);

進階解析:字元級處理範例

原文範例:n = n*10 + *argv[i] - '0';
輸入 tt 12 345 678 → argc=4,argv[1]="12"、argv[2]="345"、argv[3]="678"。
迴圈取每個參數首字元 (*argv[i]) 轉數字累積:
((0*10+'1'-'0')*10 + '3'-'0')*10 + '6'-'0' = 136。

返回值慣例

  • return 0 / exit(0):成功。
  • return 非零 / exit(非零):失敗,供腳本/父進程判斷(如 if test.exe; then ...)。

總結

argc/argv 是程式與外部交互的標準介面。熟練掌握參數解析、錯誤處理、環境變數讀取,是編寫健壯命令列工具的基礎。現代專案建議使用 getopt/argparse 等庫簡化複雜參數處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved