C程序中的命令行参数?

时间:2011-03-12 01:15:39

标签: c parameters

如何在C中读取命令行参数?例如,在

./test --help

./test --build

如何访问“--build”或“--help”?

4 个答案:

答案 0 :(得分:8)

您的参数位于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]);
}

答案 1 :(得分:3)

您可以使用argc函数的argvmain参数,并根据它们执行不同的操作:

#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包含shell传递给程序的参数数量,包括程序名称。所以myapp --help的argc为2。

argv是参数本身。最后一个argv(argv[argc])是NULL指针。


编辑:参数不需要命名为argcargv,但是命名别的东西非常,非常不好!

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

答案 2 :(得分:2)

最基本的是使用参数(int argc, char *argv[]),你可以直接解析它们。

另一种更高级的方法是使用getopt ... http://www.gnu.org/s/libc/manual/html_node/Getopt.html

答案 3 :(得分:-2)

有很多方法可以[照常]这样做。 从argv读取命令行参数(与argc一起传递给main)。

每次在argv中找到新选项时,您可以自己解析这些并且有一些开关设置标志。或者您可以使用库来解析命令行参数。我建议使用libc getopt(google it)。