getopt()函数
1、功能描述;
getopt - parse command options (enhanced) (解析命令选型(增强))
2、表头文件:
#include<unistd.h>
3、定义函数:
int getopt(int argc, char * const argv[] ,const char * optstring);
extern char *optarg;
extern int optind, opterr, optopt;
4、optstring中的内容的意义:
字符串参数optstring -- optstring是由选项Option字母组成的字符串。
例如:getopt(argc,argv,"ab:c:de::")
1、单个字符,[a] [b] [c] [d] [e], 表示选项;
2、单个字符后接一个冒号 ':' , [b:] [c:] ,表示该选项后必须跟一个参数。
参数紧跟在选项后或或者以空格隔开,参数的指针赋值给optarg;
3、单个字符后有两个冒号 '::' ,[ e:: ],表示该选项后可以跟一个参数,也可以不跟。
如果跟一个参数,参数必须紧跟在选项后不能以空格隔开,参数指针赋值给optarg(未赋值 optarg = NULL);
5、getopt设置的全局变量:
optarg——指向当先选项的参数(如果有)的指针;(当匹配一个选项后,如果该选项带选项参数,则optarg指向选项参数字符串;若该选项不带选项参数,则optarg为NULL;若该选项的选项参数为可选时,optarg为NULL表明无选项参数,optarg不为NULL时则指向选项参数字符串。)
optind——再次调用getopt()时的下一个argv指针的索引;(一个待处理元素在argv中的索引值。即下一次调用getopt的时候,从optind存储的位置处开始扫描选项。当getopt()返回-1后,optind是argv中第一个Operands的索引值。optind的初始值为1。)
opteer——opterr的值非0时,在getopt()遇到无法识别的选项,或者某个选项丢失选项参数的时候,getopt()会打印错误信息到标准错误输出。opterr值为0时,则不打印错误信息。opterr默认为1。
optopt——最后一个未知选项。(在上述两种错误之一发生时,一般情况下getopt()会返回'?',并且将optopt赋值为发生错误的选项。 )
来看个实例,我们定义字符串参数为const char *optstring = "a:b:c::d";
从前面的知识点,我们很容易得出结论:
选项a,b是必须要加一个参数的;
选项c的选项参数是可选的,