學習如何在 C 中訪問命令行參數

在你的 C 程式中,當命令啟動時,你可能需要從命令行接受參數。

對於簡單的需求,你只需要將 main() 函数的簽名從

int main(void)

修改為

int main(int argc, char *argv[])

argc 是一個整數,它包含了命令行中提供的參數數量。

argv 是一個字符串數組。

當程式啟動時,我們可以通過這兩個參數獲取傳入的參數。

注意,argv 數組中始終至少有一個項目:程式的名稱

讓我們以運行 C 編譯器來執行我們的程式為例:

gcc hello.c -o hello

如果這是我們的程式,則 argc 會為 4,argv 則是一個包含以下項目的數組:

  • gcc
  • hello.c
  • -o
  • hello

讓我們編寫一個打印接收到的參數的程式:

#include <stdio.h>

int main(int argc, char *argv[]) {
  for (int i = 0; i < argc; i++) {
    printf("%s\n", argv[i]);
  }
}

如果我們的程式名稱是 hello,並且像這樣運行它:./hello,則會得到以下輸出:

./hello

如果我們傳入一些隨機的參數,例如:./hello a b c,則會在終端輸出以下內容:

./hello
a
b
c

對於簡單的需求,這個系統運作得很好。對於更複雜的需求,常用的庫,如 getopt,可以提供更多功能。