int main(int argc, char *argv[])
int main(int argc, char *argv[], char *envp[]) // 擴展:環境變數
argc。
argv[0]:程式名稱(可能含路徑)。argv[1] ... argv[argc-1]:用戶輸入的實際參數。"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 等庫簡化複雜參數處理。