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、个人的处理方式,有更简单的,欢迎吐槽,一起交流,谢谢!
然后说明下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、个人的处理方式,有更简单的,欢迎吐槽,一起交流,谢谢!
相关文章推荐
- linux 输入参数利用getopt、struct option、getopt_long、getopt_long_only解析
- getopt_long()解析命令行选项参数
- 使用getopt_long解析程序长选项参数
- perl模块 Getopt::Long解析参数
- 使用getopt_long解析程序长选项参数
- linux 中解析命令行参数(getopt_long用法)optarg,optind
- Linux命令选项及参数解析 getopt() getopt_long() 函数
- Linux解析命令行选项参数getopt和getopt_long
- 函数参数选项的处理getopt getopt_long getopt_long_only
- 函数参数选项的处理getopt getopt_long getopt_long_only
- 程序参数解析函数使用getopt_long()函数,改编自webbench
- linux 中解析命令行参数 (getopt_long用法)
- linux 中解析命令行参数 (getopt_long用法)
- linux 中解析命令行参数 (getopt_long用法)
- linux中解析命令行参数(getopt_long用法)
- python_getopt解析命令行输入参数的使用
- linux 中解析命令行参数 (getopt_long用法)
- getopt(),getopt_long(),getopt_long_only()
- linux解析命令行选项getopt_long用法解读
- linux 中解析命令行参数(getopt_long用法)