如何在 c 中解析没有连字符的参数?
即 virsh 安装 vm
或者
git pull 起源大师
当我尝试它时,如果没有'-'前缀,所有东西都会被忽略并且 argc 返回 1(argv[0] 是程序调用)。
我正在使用 linux,但如果有一个跨平台的方法来实现这一点,那就太好了。
谢谢。
更新:问题是我在第一个参数的前面使用了一个#,试图传入#XX,例如number_program #12,不用说这不起作用。
您是否正在使用一些库来为您解析参数?专门将参数传递给 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
argv
包含程序名称和程序的参数,按照它们在命令行中给出的顺序。* 连字符并不特殊;它们只是使人和计算机都可以轻松地将选项与其他参数分开。
如果您想以某种方式解释 args,那是您的特权。就是git
这样,基本上解释argv[1]
(如果它存在,当然)作为子命令的名称。你不需要任何库来做到这一点。您只需要决定如何解释 args。
*对 args 解析方式的一些跨平台差异进行取模;例如,*nix 通常会为您做一些预解析并扩展通配符模式。除非您了解这些差异并为它们做好准备,否则您不会拥有 100% 的跨平台兼容性。