C 中的命令行參數解釋

已發表: 2022-04-29

當需要從外部而不是內部控製程序時,使用命令行參數。 它是供開發人員使用的文本接口,其中參數直接傳遞給主要方法。

調用函數時在函數內傳遞的值稱為參數。 換句話說,參數是在調用時傳遞給給定方法的參數。

語法

int main() { /* … */ }

上面的代碼接收命令並將其傳遞給計算機的操作系統運行。 這些命令總是在代碼被執行時被調用。

CC 和 C++ 命令行參數非常容易實現,因為它們簡單且易於理解的語法。

要傳遞命令行參數,主函數需要由兩個參數定義:

  1. 命令行參數的總數
  2. 命令行參數的完整列表

語法

int main(int argc, char *argv[]) { /* … */ }

  1. argc (ARGument Count)被定義為一個整數數據類型,用於存儲命令行參數的總數。 可以理解,這應該始終是一個非負值。
  2. argv (ARGument Vector)表示字符數據類型的指針數組,用於存儲整個命令行參數列表。

在命令行的幫助下,開發人員可以訪問他們計算機上的一系列文件和文件夾。 包含多個命令行參數的給定程序可以快速識別給定數據的來源或目的地。 它也有可能改變程序的功能。 它使構建過程更容易置於源代碼控制中。

在開發領域,廣泛的任務不需要實際的可視化。 在這種情況下,所有功能都可以在命令行參數的幫助下執行。 對文字圖形界面的需求非常少。 這有助於節省大量資金、精力和資源。

從世界頂級大學學習在線軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

目錄

屬性 | C 中的命令行參數

命令行參數有很多有趣且有用的屬性。 它們如下:

  • 要打印程序的名稱,命令必須是argv[0]
  • argv[argc]本質上是一個空指針
  • 要打印用戶提供的第一個參數,命令必須是argv[1]
  • 用戶從終端傳遞命令行參數
  • 這些命令的使用是從外部控製程序,而不是對程序內部的值進行硬編碼
  • 命令行參數始終傳遞給 main() 函數
  • 第一個命令土地參數是 argv[1],而最後一個命令是 argv[n]

命令行參數示例

以下是 C 中命令行參數的演示程序:

// C程序來說明

// 命令行參數

#include<stdio.h>

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

{

整數計數器;

printf("程序名稱是: %s",argv[0]);

如果(argc==1)

printf(“\n沒有傳遞除程序名稱以外的額外命令行參數”);

如果(argc>=2)

{

printf(“\n傳遞的參數數量: %d”,argc);

printf(“\n——以下命令行參數是否通過——”);

for(counter=0;counter<argc;counter++)

printf(“\nargv[%d]: %s”,counter,argv[counter]);

}

返回0;

}

輸出根據不同的場景而有所不同。 它們已分別進一步解釋。

  1. 沒有論據:

要產生以下輸出,必須在不傳遞參數的情況下執行代碼:

輸出 1

$ ./a.out

程序名稱是:./a.out

除了程序名稱之外,沒有傳遞額外的命令行參數

  • 有三個論據:

要產生以下輸出,必須使用三個參數執行代碼。

輸出 2 –

$ ./a.out 第一 第二 第三

程序名稱是:./a.out

通過的參數數量:4

----以下是通過的命令行參數----

argv[0]: ./a.out

argv[1]:第一

argv[2]:第二

argv[3]:第三

  • 使用一個參數:

代碼需要使用單個參數進行編譯和執行,該參數必須用空格分隔,同時位於引號內以產生以下輸出。

輸出 3 –

$ ./a.out “第一第二第三。”

程序名稱是:./a.out

通過的參數數量:2

----以下是通過的命令行參數----

argv[0]: ./a.out

argv[1]:第一第二第三

  • 使用引號中的單個參數並用空格分隔:

代碼必須使用由空格分隔但在單引號內的單個參數編譯和執行,以產生以下輸出。

輸出 4 –

$ ./a.out '第一第二第三'

程序名稱是:./a.out

通過的參數數量:2

----以下是通過的命令行參數----

argv[0]: ./a.out

argv[1]:第一第二第三

C 中命令行參數的優點

在 C 中使用命令行參數有幾個好處。它們如下:

  • 當程序員或用戶想要從內部而不是在內部將值傳遞給程序時,可以使用 C 中的命令行參數。
  • 命令行應用程序可以很容易地用於批處理文件或腳本。 在涉及自動化測試或構建時,這是一個巨大的幫助。
  • 如果程序員編寫工具而不是使用它們,則命令行更容易開發。 輸入參數被認為是比輸出文本流更複雜和耗時的任務。
  • 當可以從各種文件和應用程序發送或接收信息時,可以很容易地重定向輸入、輸出和錯誤流。
  • 命令行參數中的錯誤返回機制非常標準和簡單。
  • 當程序員或用戶試圖在家中或路上訪問時,基本上是在移動時,通過遠程外殼或其他類似連接使用至少可以更輕鬆地執行任務。
  • 對於指定多個文件的功能,存在定義的通配符語法標準,它藉鑑並依賴於開發人員或程序員的現有知識。
  • 命令行引人注目且速度極快。

談到各種命令行參數的優點,以下是另一個詳細的示例或演示如何實現它們。

#include <stdio.h>

#include <conio.h>

//調用main方法,將命令行參數傳遞給程序

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

{

//定義一個整數變量

詮釋一個;

//如果應用條件來檢查傳遞給程序的參數計數是否大於或等於兩個,如果條件為真,則打印傳遞給程序的命令行參數。 否則,沒有參數傳遞給程序被打印

如果(argc >= 2)

{

printf(“傳遞給程序的參數是:\n”);

for(a = 1; a < argc; a++)

{

printf("傳遞給程序的參數是:%s\t", argv[a]);

}

}

別的

{

printf("沒有參數傳遞給程序\n");

}

返回0;

}

輸出:

沒有參數傳遞給程序。

命令行參數通過調用 main 方法傳遞給上述代碼中的程序。 下一步是定義整數變量。 接下來,傳遞條件以檢查傳遞給程序的參數計數是否大於或等於 2。如果條件為真,則打印傳遞給程序的命令行參數。 如果不是,則不將任何參數傳遞給程序並打印。

結論

通過註冊 upGrad 的軟件開發執行 PG 計劃 - 全棧開發專業化,了解有關 C 和 C++ 中命令行參數的重要性的更多信息 為期 13 個月的課程旨在幫助有抱負的 IT 專業人員掌握 Java、Spring、Hibernate、HTML、React、Git 以及一系列其他編程語言和工具,以構建 Quora 和 Swiggy 等複雜應用程序。

該計劃還提供為期 4 個月的免費數據科學和機器學習高管認證。

程序員在 C 中實現命令行參數時必鬚麵對的基本缺點是什麼?

儘管 C 中的命令行參數對開發人員和程序員來說很方便,但它們確實存在一些缺點。 不具備基本知識且不習慣使用這些命令的人可能很難學習和適應,尤其是在短期內。 但是,這對於高級程序員和開發人員來說不是問題。 但事實證明,有時這對可能來自不同或相鄰領域的初級員工來說是一個障礙。 此外,命令行參數需要一個鍵盤來實現和執行。 如果有人需要通過手機或 iPad 等訪問它,這通常會成為障礙。

哪些是用於分隔命令行參數的分隔符?

為了分隔命令行參數,通常使用空格。 它們將命令名稱與其參數分開,並將各種參數彼此分開。 它們在分隔不同值的列表時也會派上用場。 多空白通常被視為單個空白。 唯一的例外發生在帶引號的字符串或用單引號括起來的註釋中。

是否可以轉換命令行參數?

所有命令行參數都作為字符串傳遞。 程序員或用戶必須始終使用人工將數值轉換為其內部形式。 主函數總是接收它的參數,通常是一個字符串數組。 這是 main 函數接受的唯一函數參數。 在存儲命令行參數時使用字符串數據類型。