首先感谢: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、个人的处理方式,有更简单的,欢迎吐槽,一起交流,谢谢!