gpt4 book ai didi

c - Mac OS X 中的 getopt

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:31 24 4
gpt4 key购买 nike

我需要使用 getopt 函数解析参数。问题是如果我在选项之前和/或之后有参数,getopt 不起作用。一旦遇到非选项参数,选项处理就会停止。

例如:tftp ip port [-b blksize] src dest 不起作用。但是 tftp [-b blksize] ip port src dest 运行良好。

显然,我需要在 optstring 的开头添加 + 才能混合参数和选项,但根据 https://www.gnu.org/software/gnulib/manual/html_node/getopt.html,Max OS X 不支持它

你有解决办法吗?谢谢。

最佳答案

将传递给 getopt 的内容更改为 argvargc 以跳过命令部分。

例如,tftp ip port [-b blksize] src dest 你假装 argv[2] 处的 portargv[0]。调用 getopt(argc - 2, argv + 2, optstring)

#include <unistd.h>
#include <stdio.h>

int main(int argc, char *argv[]){
int ch;

while( (ch = getopt(argc - 2, argv + 2, "b:")) != -1 ) {
printf("%c %s\n", ch, optarg);
}

return 0;
}

这只是一个例子。您可以添加逻辑来确定是否存在命令或子命令。

关于c - Mac OS X 中的 getopt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850564/

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