Linux程序参数的获取

为了获取程序的参数,Linux C提供了标准编程接口:getopt函数,它支持需要关联值和不许要关联值的选项。

下面对函数介绍如下:

1 #include<unistd.h> 
2 int getopt(int argc,char *const argv[],const char *optstring);
3 extern char *optarg;
4 extern int optind,opterr,optopt;

getopt函数将传递给程序的main函数的argc和argv作为参数,同时接收一个选项制定符字符串optstring,该字符串告诉getopt哪些选项可用,以及他们是否存在关联值。如果一个字符后面紧跟一个冒号(:)表明选项有一个关联值作为参数。

getopt函数具体行为总结如下:

1.如果选项存在关联值,optarg指向这个值

2.如果选项处理完毕,返回-1,遇到特殊参数--直接停止扫描

3.如果遇到无法识别的选项,返回问号(?),并将值保存在optopt中,

4.如果选项需要一个关联值,用户没有提供,同样返回问号(?)如果在选项字符串第一个字符设置为冒号(:),那么同样的情况返回冒号(:)

5.optind指向其他参数,对于Linux环境,argv被改写,所有其他参数都已经被放在后面。

下面举例对getopt函数使用如下:

 1 #include<stdio.h>
 2 #include<unistd.h>
 3 #include<stdlib.h>
 4 
 5 int main(int argc,char *argv[])
 6 {
 7     int opt;
 8     while((opt = getopt(argc,argv,":if:lr")) != -1){
 9         switch(opt){
10             case 'i':case 'l':case 'r':
11                 printf("option:%c\n",opt);
12                 break;
13             case 'f':
14                 printf("filename: %s\n",optarg);   //optarg 用于存储关联参数  
15                 break;
16             case ':':
17                 printf("option needs a value\n");  //没有给出对应关联值的时候,返回:
18                 break;
19             case '?':
20                 printf("unknown option: %c\n",optopt);  //未识别的选项,存入optopt
21                 break;
22         }
23     }
24     //optind 用于表示其他参数的索引,注意此时argv已经被重写了
25     for(; optind < argc; optind ++)
26         printf("argument: %s\n",argv[optind]);
27     exit(0);
28 }

程序测试如下图所示:

转载于:https://www.cnblogs.com/Licious/archive/2013/04/22/3035726.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值