[英]Command line inputs as arguments
我正在為一個類設計程序,其中一條指令是使用命令行輸入。 例如,當您運行main -n 5 3
它將5
和3
作為參數。 什么是-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.