【发布时间】:2021-12-18 18:12:27
【问题描述】:
我正在编写接受命令行参数的程序,但第一个参数是必需的,并且没有连字符(“-”)。应用程序的执行必须是:
./program <server> [-d] [-n]
我试图让argv[1](在这种情况下是server)成为服务器,但是当服务器以某种方式被遗忘时会出现问题,然后它将选项保存到服务器中。当需要不带连字符的第一个参数时,我该如何处理或者我的optstring 应该是什么样子?
【问题讨论】:
-
只是头脑风暴...我不使用
getopt()。也许试试getopt(argc - 1, argv + 1, "options")?? -
如果需要,那么它不是一个“选项”。
-
猜你是对的@WilliamPursell
-
另外,如果您打算坚持要求的参数必须出现在所有选项之前,那么程序需要的命令行格式与
getopt()支持的格式不一致。您也许可以说服getopt()处理选项,例如通过@pmg 描述的技巧,但您应该考虑改为遵守标准POSIX 约定,其中非选项参数在之后 所有选项,或遵循一个宽松的约定(至少受 GNUgetopt()支持),其中选项和非选项参数可以混合使用。