【发布时间】:2018-03-26 23:46:32
【问题描述】:
我有一个关于 C 语言中的 getopt 的问题。我有多个选项标志,并试图让它为所有事情采用一个参数。命令行类似于command -a fileName 或command -b fileName 或command -ab fileName。基本上每个命令都接受一个文件名,如果他们想组合命令,他们应该只需要输入一个文件名。在 getopt 中,字符串看起来像 a:b:,变量设置为 argv[argc -1]。如果它只是一个选项,这很好,但如果有多个选项(即command -ab fileName)则失败,因为: 强制用户输入一个选项,但:: 将使单个选项不强制用户输入一个选项。有什么建议吗?
【问题讨论】:
-
根据
getopt文档:“如果 getopt() 检测到缺少参数并且 optstring 的第一个字符是冒号 ( ':' ),则应返回冒号 ( ':' )。 "所以,也许将:a:b:传递给getopt。 -
也许你应该有一个特定的标志来附加文件名,而不是重载其他参数。例如,
getopt(argc, argv, "f:abcde")。 -
文件名真的是选项的参数,而不仅仅是命令的参数吗?你能写
command filename没有选项吗?