您的位置:首页 > 运维架构

函数getopt的用法

2014-07-21 12:02 363 查看
函数getopt()用来分析命令行参数,其函数原型和相关变量声明如下:

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

extern char *optarg;

extern int optind, // 初始化值为1,下一次调用getopt时,从optind存储的位置重新开始检查选项,也就是从下一个'-'的选项开始。

optarg和optind是两个最重要的external变量。optarg是指向参数的指针(当然这只针对有参数的选项);optind是argv[]数组的索引,众所周知,argv[0]是函数名称,所有参数从argv[1]开始,所以optind被初始化设置指为1。 每调用一次getopt()函数,返回一个选项,如果该选项有参数,则optarg指向该参数。

在命令行选项参数再也检查不到optstring中包含的选项时,返回-1。

函数getopt()有三个参数,argc和argv[]应该不需要多说,下面说一下字符串optstring,它是作为选项的字符串的列表。

函数getopt()认为optstring中,以'-’开头的字符(注意!不是字符串!!)就是命令行参数选项,有的参数选项后面可以跟参数值。optstring中的格式规范如下:

1) 单个字符,表示选项,

2) 单个字符后接一个冒号”:”,表示该选项后必须跟一个参数值。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。

3) 单个字符后跟两个冒号”:”,表示该选项后必须跟一个参数。

头文件位置由于系统而不同:
SVID3, XPG3:

#include <stdio.h>

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

extern char *optarg;

extern int optind, opterr, optopt;

POSIX.2, XPG4, SUS, SUSv2:

#include <unistd.h>

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

extern char *optarg;

extern int optind, opterr, optopt;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: