【发布时间】:2016-07-17 12:38:05
【问题描述】:
如果给出一个选项,是否可以告诉 getopt_long 我需要两个参数?
例如,如果 -i 存在,则接下来需要两个参数,如果不存在,解析将失败。
【问题讨论】:
-
好的,谢谢,我会找到另一种方法!
-
添加了解决方法的答案。
标签: c getopt getopt-long
如果给出一个选项,是否可以告诉 getopt_long 我需要两个参数?
例如,如果 -i 存在,则接下来需要两个参数,如果不存在,解析将失败。
【问题讨论】:
标签: c getopt getopt-long
根据manual 和getopt_long() -- proper way to use it?,每个参数传入一个通过 optarg 传递的值。
看来您需要做的是使用 optarg 作为第一个参数,并使用 getopt() 使用的指针作为指针,然后使用 strlen(optarg) 指向参数之后。然后(当你在 --i 中时)测试下一个字符串是参数还是下一个选项。如果是下一个选项,则踢出错误。如果是第二个参数,请选择它。
您可能必须使用 optind 变量并指向 argv[optind] 来进行处理。
但是,这可能行不通,因为
默认情况下,getargs() 会在扫描时置换 argv 的内容,因此 最终所有的非选项都在最后。
get_opt() 应该跳过第二个参数,但是,我不确定(基于阅读手册)它是否跳过它或将其保存以备后用。编写代码时,您必须检查调试输出。我没有时间为此编写测试。
【讨论】: