gpt4 book ai didi

正确的 optargs 处理非可选参数 (c)

转载 作者:行者123 更新时间:2023-11-30 14:24:26 26 4
gpt4 key购买 nike

我有一个程序需要使用以下方式调用:

program parameter1 parameter2 -x1 -y

但我觉得如果我这样做应该会起作用:

program -x1 -y parameter1 parameter2

或其组合。如何在不进行可怕的肮脏黑客攻击的情况下获取 parameter1parameter2 ?目前我有一个

while ((c = getopt (argc, argv, "x:y")) != -1){
/* do stuff */
}

循环可选参数,但其他参数呢?仅查看 argv[1]argv[2] 似乎是错误的,因为它们可能位于任何地方。

我确信对此有一个既定的解决方案。

最佳答案

退出 while 循环后,optind 指向第一个非选项参数。看一下 getopt(3) 手册页:

   If  there  are  no  more option characters, getopt() returns -1.  Then optind is the
index in argv of the first argv-element that is not an option.

因此,您的第一个非选项参数是 argv[optind] 等等。

while ((c = getopt (argc, argv, "x:y")) != -1){
/* do stuff */
}

param1 = argv[optind]
param2 = argv[optind+1]

getopt 将排列参数,以便即使对于第一个示例(其中选项参数位于命令行上的非选项参数之后),这仍然成立。

关于正确的 optargs 处理非可选参数 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com