没有'-'的第一个参数必须是必要的

First argument that is without '-' has to be necessary

我正在编写接受命令行参数的程序,但第一个参数是必需的,并且没有连字符(“-”)。应用程序的执行必须是:

./program <server> [-d] [-n]

我尝试将 argv[1](在本例中为 server)设置为服务器,但当服务器不知何故被遗忘时会出现问题,然后它将选项保存到服务器中。我该如何处理这个问题,或者当需要第一个不带连字符的参数时,我的 optstring 应该是什么样子?

如果您的参数前面没有“-”,则 getopt 将无法识别它。 你应该自己处理第一个参数,像这样:

if (!(argc >= 2 && argv[1][0] != '-'))
    errx(1, "Usage: ./program <server> [-d] [-n]");

然后您可以使用 getopt,因为它会独立于其他值搜索以“-”开头的选项。

如果你想处理 -d-n 没有任何价值的选项,你的 optstring 应该看起来像 "dn" .