没有连字符C的参数

时间:2013-10-08 14:40:31

标签: c arguments hyphen

如何解析c中没有连字符的参数?

即。 virsh install vm

git pull origin master

当我尝试出来时,如果没有' - '前缀,则所有内容都会被忽略,而argc返回1(argv [0]是程序调用)。

我正在使用linux,但如果有一个跨平台的方法来实现这一点会很好。

感谢。

更新:问题是我在第一个参数中使用了#,试图传入#XX例如number_program#12,不用说这不起作用。

2 个答案:

答案 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%的跨平台兼容性。