[英]Command-line Parameters in C program?
如何在 C 中讀取命令行參數? 例如,在
./test --help
或者
./test --build
如何訪問“--build”或“--help”?
您的參數在argv中:
int main(int argc, char **argv)
如果您打印argv的內容(argv [0],argv [1]等),您將會明白。
嘗試:
int main (int argc, char **argv)
{
for(int i = 0;i< argc;i++)
printf("%s\r\n",argv[i]);
}
您可以對main
功能使用argc
和argv
參數,並根據它們執行不同的操作:
#include <string.h>
void dohelp(void) { /* whatever; */ }
void dobuild(void) { /* whatever; */ }
int main(int argc, char **argv) {
if (argc == 2) {
if (!strcmp(argv[1], "--help")) dohelp();
if (!strcmp(argv[1], "--build")) dobuild();
}
return 0;
}
argc
包含外殼程序傳遞給程序的參數數量,包括程序名稱。 因此myapp --help
的argc為2。
argv
是參數本身。 最后一個argv( argv[argc]
)是NULL指針。
編輯:參數不需要命名為argc
和argv
,但是命名其他名稱是非常非常糟糕的!
int main(int foo, char **bar) /* RGAGGGGHH */
int main(int n, char **options) /* RGAGGGGHH */
命令行參數是通過其名稱傳遞給程序的參數。 例如,UNIX 程序cp
(復制兩個文件)具有以下命令行參數:
cp SOURCE DEST
您可以使用argc
和argv
訪問命令行參數:
int main(int argc, char *argv[])
{
return 0;
}
argc 是參數的數量,包括程序名稱,而 argv 是包含參數的字符串數組。 argv[0]
是程序名, argv[argc]
保證是一個NULL
指針。
所以cp
程序可以這樣實現:
int main(int argc, char *argv[])
{
char *src = argv[1];
char *dest = argv[2];
cpy(dest, src);
}
它們不必命名為argc
和argv
; 他們可以有任何你想要的名字,盡管傳統上他們是這樣叫的。
最基本的是使用參數(int argc, char *argv[])
,您可以直接解析它們。
一種更高級的方法是使用getopt ... http://www.gnu.org/s/libc/manual/html_node/Getopt.html
有多種方法[照常]。 從argv讀取命令行參數(與argc一起傳遞給main)。
您可以自己解析這些內容,並且每次在argv中找到新選項時都有一個位開關設置標志。 或者,您可以使用庫來解析命令行參數。 我建議libc getopt(用谷歌搜索)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.