int main(int argc, char *argv[])
argv[0] 為程序路徑/名稱,argv[1]...argv[argc-1] 為實際參數,argv[argc] == NULL。| 命令行輸入 | argc | argv 內容 |
|---|---|---|
./prog | 1 | argv[0]="./prog" |
./prog para1 | 2 | argv[0]="./prog", argv[1]="para1" |
./prog "a b" c | 3 | argv[0]="./prog", argv[1]="a b", argv[2]="c" |
引號可包含空格,Shell 會將其視為單個參數傳遞。
部分實現(如 Turbo C、Linux)支持第三參數:
int main(int argc, char *argv[], char *envp[])
envp 為 NAME=VALUE 格式的環境變量數組,以 NULL 結尾。getenv()。#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Usage: %s [arg2...]\n", argv[0]);
return EXIT_FAILURE;
}
for (int i = 1; i < argc; ++i) {
printf("Arg %d: %s\n", i, argv[i]);
}
return EXIT_SUCCESS;
}
ARG_MAX (128KB+),Windows 命令行 8191 字符。掌握 argc/argv 是編寫專業命令行工具的基石。理解其內存佈局、Shell 解析規則、跨平台差異,能讓你的程序更健壯、更易用。