【问题标题】:C getopt_long two required arguments for an optionC getopt_long 一个选项的两个必需参数
【发布时间】:2016-07-17 12:38:05
【问题描述】:

如果给出一个选项,是否可以告诉 getopt_long 我需要两个参数?

例如,如果 -i 存在,则接下来需要两个参数,如果不存在,解析将失败。

【问题讨论】:

  • 好的,谢谢,我会找到另一种方法!
  • 添加了解决方法的答案。

标签: c getopt getopt-long


【解决方案1】:

根据manualgetopt_long() -- proper way to use it?,每个参数传入一个通过 optarg 传递的值。

看来您需要做的是使用 optarg 作为第一个参数,并使用 getopt() 使用的指针作为指针,然后使用 strlen(optarg) 指向参数之后。然后(当你在 --i 中时)测试下一个字符串是参数还是下一个选项。如果是下一个选项,则踢出错误。如果是第二个参数,请选择它。

您可能必须使用 optind 变量并指向 argv[optind] 来进行处理。

但是,这可能行不通,因为

默认情况下,getargs() 会在扫描时置换 argv 的内容,因此 最终所有的非选项都在最后。

get_opt() 应该跳过第二个参数,但是,我不确定(基于阅读手册)它是否跳过它或将其保存以备后用。编写代码时,您必须检查调试输出。我没有时间为此编写测试。

【讨论】:

    猜你喜欢
    • 2020-07-14
    • 2017-03-28
    • 2012-02-06
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多