您的位置:首页 > 运维架构

getopt_long_only解析带多个参数值和对optind的个人理解

2017-07-18 10:30 351 查看
首先感谢:http://blog.csdn.net/chaoyue1216/article/details/7329788里面的说,对函数有个基本的了解;

然后说明下optind使用过程中的个人理解:

1、在正确情况下,也就是说输出的参数和参数值都按要求的情况,optindx在调用getopt_long_only函数后会保存下一个参数的位置;

比如: r -I 210 -sp 110  -lt 120;在获取-sp值的时候optindx = 5;

2、但是有时候可能输入的参数不按要求:

比如:r -I 210 -sp 110 121 -lt 120;由于-sp带的参数值有多个(正常情况只能带一个参数值);这时获取到的optind=5,也就是说,会指向到下一个非选项的参数值121;

这样如果用optind作为参考值,获取多个参数可能会有问题;

3、argv中的值顺序发生变化是在参数都遍历完后,退出之后才会变化,而optind最后会指向到非选项的参数值121,这时optind=7;

4、这样的话,要实现获取多个参数值,我的处理方式是:

比如: r -I 210 -sp 110 121 -lt 120

       保存对应的上一个参数获取到参数值对应的偏移值,比如获取到210 的时候iLastIndex = 2后加1;

然后遍历到-sp,获取对应的偏移值iIndex =
iLastIndex +1;

这样就知道对应的下一个参数的偏移值;

5、个人的处理方式,有更简单的,欢迎吐槽,一起交流,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: