簡體   English   中英

命令行輸入作為參數

[英]Command line inputs as arguments

我正在為一個類設計程序,其中一條指令是使用命令行輸入。 例如,當您運行main -n 5 3它將53作為參數。 什么是-n

我如何在具有代碼塊的PC而非Linux機器上進行測試?
我的程序將如何讀取這些內容?
我是否需要命名我的文件main,然后在main中適當地傳遞兩個參數?

您程序中的main功能具有原型

int main (int argc, char ** argv);

其中argc將包含傳遞的參數數量,而argv是指向char*數組的指針,該數組包含以空終止的字符串作為參數。

通常argv[0]包含程序的名稱, argv[1] argv[0]包含第一個參數,依此類推。 在您的情況下,使用參數-n 5 3運行程序時,您將擁有

argv[1] = "-n"
argv[2] = "5"
argv[3] = "3"

可執行文件-n 5 3

結果為argv的以下內容:

argv[0] = a.exe
argv[1] = -n
argv[2] = 5
argv[3] = 3
argv[4] = NULL

argc將是4


在linux上, unistd.h中有一個getopt函數,它可以幫助您檢索n選項並解析其后的參數。 Howevef如果您的程序只需要找到-n並從后面的兩個參數中讀取值,則可以執行以下操作:

int i, x = 0, y = 0;
for (i = 0; i < argc; i++) {
    if (strcmp(argv[i], "-n") == 0 && i + 2 < argc) {
        x = atoi(argv[i+1]);
        y = atoi(argv[i+2]);
    }
}

正如其他人指出的那樣,參數位於argv [...]中。 在現實世界中,許多人都使用諸如getopt之類的方法來解析參數,因為它非常健壯並且已經過測試。

通常,C使用argc和argv來索引從命令行傳遞的參數。 我有一段時間沒有在PC上工作了,但是當我這樣做時,代碼與Unix一致。

#include <stdio.h>

int main (int argc, char *argv[]) {
  printf("Total args count=%s\n", argc);
  printf("Command=%s\n", argv[0]);

  for (i=1; i< argc; i++) {
    printf("\narg%d=%s", i, argv[i]);
  }

  printf("\n");
  return 0;
}

這將返回

Total Args 4
Command main 
  1 = -n 
  2 = 5 
  3 = 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM