gpt4 book ai didi

c - getopt_long 问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:27 26 4
gpt4 key购买 nike

我在解析我正在编写的程序中的参数时遇到问题,代码如下:

void parse_args(int argc, char** argv)
{
char ch;
int index = 0;

struct option options[] = {
{ "help", no_argument, NULL, 'h' },
{ "port", required_argument, NULL, 'p' },
{ "stop", no_argument, NULL, 's' },
{ 0, 0, 0, 0 }
};

while ((ch = getopt_long(argc, argv, "hp:s", options, &index)) != -1) {
switch (ch) {
case 'h':
printf("Option h, or --help.\n");
break;
case 's':
printf("Option s, or --stop.\n");

break;
case 'p':
printf("Option p, or --port.\n");
if (optarg != NULL)
printf("the port is %s\n", optarg);
break;
case '?':
printf("I don't understand this option!!!\n");

case -1:
break;
default:
printf("Help will be printed very soon -:)\n");
}
}
}

当我运行我的程序时,我得到了一些奇怪的输出:

./Server -p 80
Option p, or --port.
the port is 80

./Server -po 80
Option p, or --port.
the port is o

./Server -por 80
Option p, or --port.
the port is or

./Server -hoho
Option h, or --help.
Server: invalid option -- o
I don't understand this option!!!

最佳答案

我认为混淆源于对 long get opt 的误解。本质上,只有当您使用 -- 形式时,它才会进行部分字符串匹配。当您只使用 - 时,它将回退到标准解析,因此 -por 80 匹配为 -p 或 80 (如,选项是-p 且参数为)。用 --po--por 做同样的事情。至于帮助,试试 --he--hel

关于c - getopt_long 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7490786/

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