如何在命令行中的某些字符串后捕获参数?

时间:2012-08-23 05:17:59

标签: c unix

如何在命令行中的某个字符串后捕获参数?

./executable.out -apps path_to_out

在上面的代码中,我想将path_to_out存储在字符串变量中。这样做的有效方法是什么?

4 个答案:

答案 0 :(得分:4)

这取决于你想要什么样的选择。如果您只愿意使用单字母选项,则可以使用C库函数getopt来解析命令行。如果您想要长选项(例如--apps),可以使用getopt_long,但这是一个GNU扩展,无法很好地移植。如果你想要真正的,真正花哨的选项解析,你可以使用类似GLib的东西。

当然,您可以自己滚动,迭代从1到argc的参数,当遇到-apps时,检查i+1 < argc并抓住下一个参数。< / p>

答案 1 :(得分:1)

如果你的路径是命令行中的最后一个参数,

argv[argc-1]已经有了你的值。

如果你的主要是:

int main(int argc,char **argv)

所有命令行参数都在char **argv中。 在你的情况下: argv[2]是path_to_out。 如果你想在string中复制它,你无论如何都可以这样做:

string path(argv[2]);

答案 2 :(得分:0)

看来,通过询问“在命令行上的一些字符串之后”,你指的是命令行参数-apps以破折号开头的事实,这使它成为“选项”。

这样做的首选方法是使用预定义的库来处理选项,例如GNU系统上的getopt

答案 3 :(得分:0)

以这种方式运行参数存储..

实施例:---&GT; ./executable.out -apps path_to_out

argv[0] will be "./executable.out"
argv[1] will be "-apps"
and argv[2] will be "path_to_out".