C/C++ 命令列引數


在執行 C 程式時,可以從命令列傳遞一些值給程式。這些值稱為命令列引數,在很多情況下它們對程式非常重要,尤其是在您希望從外部控制程式而不是在程式碼內部硬編碼這些值時。

命令列引數是使用 main() 函式的引數來處理的,其中 argc 指的是傳遞的引數數量,argv[] 是一個指標陣列,指向傳遞給程式的每個引數。以下是一個簡單的示例,它檢查命令列是否提供了任何引數,並根據情況採取相應的操作:

示例

 線上演示

#include <stdio.h>
int main( int argc, char *argv[] ) {
   if( argc == 2 ) {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 ) {
      printf("Too many arguments supplied.\n");
   }
   else {
      printf("One argument expected.\n");
   }
}

輸出

$./a.out testing
The argument supplied is testing

輸出

$./a.out testing1 testing2
Too many arguments supplied.

輸出

$./a.out
One argument expected

需要注意的是,argv[0] 儲存程式本身的名稱,argv[1] 是指向提供的第一個命令列引數的指標,*argv[n] 是最後一個引數。如果未提供任何引數,則 argc 為 1,如果傳遞一個引數,則 argc 設定為 2。

傳遞的所有命令列引數都用空格分隔,但如果引數本身包含空格,則可以透過將它們放在雙引號 "" 或單引號 '' 內來傳遞。讓我們再次重寫上面的示例,其中我們將列印程式名稱,並將一個命令列引數放在雙引號內傳遞:

示例

 線上演示

#include <stdio.h>
int main( int argc, char *argv[] ) {
   printf("Program name %s\n", argv[0]);
   if( argc == 2 ) {
      printf("The argument supplied is %s\n", argv[1]);
   }
   else if( argc > 2 ) {
      printf("Too many arguments supplied.\n");
   }
   else {
      printf("One argument expected.\n");
   }
}

輸出

$./a.out "testing1 testing2"
Progranm name ./a.out
The argument supplied is testing1 testing2

更新於: 2019-07-30

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.