我需要这样调用我的程序:
./program hello -r foo bar
我从 argv[1] 中打招呼,但我在值栏上遇到问题,我还应该将“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 来做到这一点,但是有没有办法用 getopt 来做到这一点,就像在 bash 中一样?
Thanks.
bar
在人们眼中不是一个选项参数getopt
。相反,GNUgetopt
重新排列位置参数,以便在处理结束时,您有argv[3]
是“你好”和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]
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)