gpt4 book ai didi

c - Getopt 转移 optarg

转载 作者:太空狗 更新时间:2023-10-29 14:54:17 28 4
gpt4 key购买 nike

我需要这样调用我的程序:

./program hello -r foo bar

我从 argv[1] 中打招呼,但我在使用值 bar 时遇到问题,我是否也应该将“r:”更改为其他内容?

while((c = getopt(argc, argv, "r:")) != -1){
switch(i){
...
case 'r':
var_foo = optarg;
//shell like argument shift here?
var_bar = optarg;
break;
...}

我知道我可以通过传递 argv 来做到这一点,但是有没有一种方法可以像在 bash 中那样使用 getopt 来做到这一点?

谢谢。

最佳答案

bar 不是 getopt 眼中的选项参数。相反,GNU getopt 重新排列 位置参数,以便在处理结束时,argv[3] 为“hello”并且 argv[4] 是“酒吧”。基本上,当你完成 getopting 后,你仍然有位置参数 [optind, argc) 需要处理:

int main(int argc, char * argv[])
{
{
int c;
while ((c = getopt(argc, argv, ...)) != -1) { /* ... */ }
}

for (int i = optind; i != argc; ++i)
{
// have positional argument argv[i]
}
}

关于c - Getopt 转移 optarg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10058669/

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