標準 C 允許 main 函數接受命令列參數,原型為:
int main(int argc, char *argv[]); // 等價於 int main(int argc, char **argv);
argc(argument count):參數個數,包含程式名稱本身,故最小值為 1。argv(argument vector):字串指標陣列,argv[0] 為程式名稱(如 ./a.out),實際參數從 argv[1] 開始。#include <stdio.h>
int main(int argc, char *argv[]) {
printf("argc = %d\n", argc);
for (int i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}
$ gcc main_args.c -o main_args
$ ./main_args hello world test
argc = 4
argv[0] = ./main_args
argv[1] = hello
argv[2] = world
argv[3] = test
./a.out "hello world" 視為兩個參數(argc=3),若需作為單一參數需加引號。main,否則編譯報錯「redefinition of main」。char *argv[] 退化為 char **argv,每個元素指向以 \0 結尾的字串。argv 前必先驗證 argc,防止越界訪問。./app -c config.ini./server --daemon./process file1.txt file2.txt常配合 getopt()(POSIX)或 getopt_long() 解析短/長選項,支援 -a -b value --config=file 等複雜語法。