簡體   English   中英

C程序中的命令行參數?

[英]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功能使用argcargv參數,並根據它們執行不同的操作:

#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指針。


編輯:參數不需要命名為argcargv ,但是命名其他名稱是非常非常糟糕的!

int main(int foo, char **bar) /* RGAGGGGHH */
int main(int n, char **options) /* RGAGGGGHH */

命令行參數是通過其名稱傳遞給程序的參數。 例如,UNIX 程序cp (復制兩個文件)具有以下命令行參數:

cp SOURCE DEST

您可以使用argcargv訪問命令行參數:

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);
}

它們不必命名為argcargv 他們可以有任何你想要的名字,盡管傳統上他們是這樣叫的。

最基本的是使用參數(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.

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