getopt() 函数使用方法
来源:互联网 发布:知乎 经典电影 编辑:程序博客网 时间:2024/06/06 23:16
getopt被用来解析命令行选项参数。
#include <unistd.h>
首先说一下什么是选项,什么是参数。
1.单个字符,表示选项,
2.单个字符后接一个冒号:表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。
3 单个字符后跟两个冒号,表示该选项后必须跟一个参数。参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。(这个特性是GNU的扩张)。
例如gcc -g -o test test.c ,其中g和o表示选项,test为选项o的参数。
上面是getopt()函数的基本含义,大家懂得了这些之后,我们一个例子加深一下理解。
例如我们这样调用getopt(argc, argv, "ab:c:de::");
从上面我们可以知道,选项a,d没有参数,选项b,c有一个参数,选项e有有一个参数且必须紧跟在选项后不能以空格隔开。getopt首先扫描argv[1]到argv[argc-1],并将选项及参数依次放到argv数组的最左边,非选项参数依次放到argv的最后边。
代码如下:
#include <stdio.h>#include <unistd.h> int main(int argc, char * argv[]) { int aflag=0, bflag=0, cflag=0; int ch; printf("optind:%d,opterr:%d\n",optind,opterr); printf("--------------------------\n"); while ((ch = getopt(argc, argv, "ab:c:de::")) != -1) { printf("optind: %d,argc:%d,argv[%d]:%s\n", optind,argc,optind,argv[optind]); switch (ch) { case 'a': printf("HAVE option: -a\n\n"); break; case 'b': printf("HAVE option: -b\n"); printf("The argument of -b is %s\n\n", optarg); break; case 'c': printf("HAVE option: -c\n"); printf("The argument of -c is %s\n\n", optarg); break; case 'd': printf("HAVE option: -d\n\n"); break; case 'e': printf("HAVE option: -e\n"); printf("The argument of -e is %s\n\n", optarg); break; case '?': printf("Unknown option: %c\n\n",(char)optopt); break; } } printf("----------------------------\n"); printf("optind=%d,argv[%d]=%s\n",optind,optind,argv[optind]); }
--------------------------
optind: 3,argc:10,argv[3]:-b
HAVE option: -a
optind: 5,argc:10,argv[5]:code
HAVE option: -b
The argument of -b is -c
optind: 7,argc:10,argv[7]:file2
HAVE option: -d
optind: 9,argc:10,argv[9]:file3
HAVE option: -e
The argument of -e is (null)
----------------------------
optind=6,argv[6]=file1
- getopt()函数的使用方法
- getopt() 函数使用方法
- getopt使用方法
- getopt使用方法
- [转] 关于C语言中getopt()函数的使用方法
- 关于C语言中getopt()函数的使用方法
- 关于C语言中getopt()函数的使用方法
- 关于C语言中getopt()函数的使用方法
- 关于C语言中getopt()函数的使用方法
- getopt函数
- getopt()函数
- getopt函数
- getopt函数
- getopt函数
- getopt函数
- getopt()函数
- getopt函数
- getopt函数
- unity3D__总结
- 【一步步学习MongoDB】——MongoDB简单介绍(一)
- 2014年的最后一天
- 回顾2014,设想2015
- 『HTML5梦幻之旅』 - 跟随歌曲显示当前歌词
- getopt() 函数使用方法
- Visual Basic 语言参考 ------类型转换函数
- $.ajaxSetup 使用
- 将数据窗口保存为Excel文件的方法
- Leetcode之Reverse Words in a String
- DnsApi简单探索(1) DnsQueryEx function
- 关于自定义协议分割字段的实现
- Jmeter 导入Eclipse,如何编译
- 1008. Elevator (20)