如何解析c中没有连字符的参数?
即。 virsh install vm
或
git pull origin master
当我尝试出来时,如果没有' - '前缀,则所有内容都会被忽略,而argc返回1(argv [0]是程序调用)。
我正在使用linux,但如果有一个跨平台的方法来实现这一点会很好。
感谢。
更新:问题是我在第一个参数中使用了#,试图传入#XX例如number_program#12,不用说这不起作用。
答案 0 :(得分:1)
您是否正在使用某个库为您解析参数?特别是在将参数传递给C程序时,没有特殊的“连字符”参数。无论如何,请解析argv。
例如:
#include <stdio.h>
int main(int argc, char **argv)
{
int i;
for(i=0; i<argc; i++) {
//dont do this without proper input validation
printf("%s\n", argv[i]);
}
return 0;
}
示例运行:
$ ./a.out test test test -hyphen
./a.out
test
test
test
-hyphen
答案 1 :(得分:1)
argv
包含程序名称和程序的参数,按照命令行中给出的顺序。 * 连字符不是特殊的;它们只是让人和计算机都可以轻松地将选项与其他算法分开。
如果你想以某种方式解释args,那就是你的特权。这就是git
的作用,基本上解释argv[1]
(如果它存在,当然)作为子命令的名称。并且您不需要任何库来执行此操作。您只需要决定如何解释args。
* 模拟args解析方式的一些跨平台差异; * nix通常会为您进行一些预解析,并扩展通配符模式。除非您了解这些差异并为其做好准备,否则您将无法获得100%的跨平台兼容性。