getopt和getopt_long

getopt和getopt_long函数

1.介绍getopt

int getopt(int argc, char * const argv[],  
           const char *optstring);  

getopt函数的前两个参数,就是main函数的argc和argv,这两者直接传入即可,要考虑的就只剩下第三个参数。
optstring的格式举例说明比较方便,例如:
char *optstring = “abcd:”;
上面这个optstring在传入之后,getopt函数将依次检查命令行是否指定了 -a, -b, -c及 -d(这需要多次调用getopt函数,直到其返回-1),c才能检查完所有你输入的参数。因为每次检查一个参数,当检查到上面某一个参数被指定时,函数会返回被指定的参数名称(即该字母)
最后一个参数d后面带有冒号,代表可以加指定的参数,如 -d 10086
optind表示的是下一个将被处理到的参数在argv中的下标值。
如果指定opterr = 0的话,在getopt、getopt_long遇到错误将不会输出错误信息到标准输出流。

代码和运行结果:
这里写图片描述

这里写图片描述

2介绍getopt_long函数

int getopt_long(int argc, char * const argv[],  
           const char *optstring,  
           const struct option *longopts, int *longindex);  

2.1
在这里第一个多余的参数:longopts指向的是一个由option结构体组成的数组,这是已经定义好的,你动态调用就行。
结构如下:

struct option {
               const char *name;
               //是参数的名称
               int         has_arg;
               //无参0有参1都行2
               int        *flag;
               //flag = 0函数返回val
               int         val;
               //指定函数找到选项时候的番薯返回值或者flag指向的值
           };

2.2
如果longindex不为,0,,即是找到参数在longopts中的下标值。
代码:
这里写图片描述
结果:
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值