如何在C中读取命令行参数?例如,在
中./test --help
或
./test --build
如何访问“--build”或“--help”?
答案 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
函数的argv
和main
参数,并根据它们执行不同的操作:
#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指针。
编辑:参数不需要命名为argc
和argv
,但是命名别的东西非常,非常不好!
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)。