getopt用法

函数原型

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

#include <stdio.h>
#include <unistd.h>

extern char *optarg; //指向参数.
extern int optind; //argv下标值,初始化值为1,下一次调用getopt时,从optind存储的位置重新开始检查选项.
extern int opterr; //初始化值为1,当opterr=0时,getopt不向stderr输出错误信息.
extern int optopt; //当命令行选项字符不包括在optstring中或者选项缺少必要的参数时,该选项存储在optopt中,getopt返回'?'.

int main(int argc,char *argv[])
{
  int ch;
  while((ch=getopt(argc,argv,"a:b::cde"))!=-1)
  {
    printf("optind:%d\n",optind);
    printf("optarg:%s\n",optarg);
    printf("ch:%c\n",ch);
    switch(ch)
    {
      case 'a':
        printf("option a:'%s'\n",optarg);
        break;
      case 'b':
        printf("option b:'%s'\n",optarg);
        break;
      case 'c':
        printf("option c\n");
        break;
      case 'd':
        printf("option d\n");
        break;
      case 'e':
        printf("option e\n");
        break;
      default:
        printf("default option:%c\n",ch);
    }
    printf("optopt:%c\n\n",optopt);
  }

}    



 ./a.out -a 123 -b456 -c

optind:3
optarg:123
ch:a
option a:'123'
optopt:

optind:4
optarg:456
ch:b
option b:'456'
optopt:

optind:5
optarg:(null)
ch:c
option c
optopt:

 
1) 单个字符(对应上文中'cde'),表示选项;
2) 单个字符后接一个冒号':'(对应上文中'a:'),表示该选项后必须跟一个参数值,参数紧跟在选项后或者以空格隔开,该参数的指针赋给optarg;
3) 单个字符后跟两个冒号'::'(对应上文中'b::'),表示该选项后必须跟一个参数,参数必须紧跟在选项后不能以空格隔开,该参数的指针赋给optarg。(这个特性是GNU的扩展)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值