关于c:Linux函数学习getoptgetoptlonggetoptlongonly

35次阅读

共计 1044 个字符,预计需要花费 3 分钟才能阅读完成。

简介:这几个函数是对相似于 main 函数那样传进来的参数进行解析。
参数的指定由 -key value -key –key value –key -key value1 value2 这几种类型,其中 getopt 能够解决前两种类型,getopt_long 可能解决所有类型的参数解析,getopt_long_only 相似于 getopt_long,能够解决所有选项。具体细节再前面的局部进行介绍。

 首先介绍 getopt 选项,他是绝对比较简单的。函数原型:int getopt(int argc, char * const argv[],  const char *optstring);
argc 和 argv 就是 main 函数传进来的参数,在这里就不多说了。optstring:此参数是指定咱们要解析的参数内容。eg:abc:(注,getopt 函数只能解决带一个冒号的 optstring)
optind:是下一次调用 getopt 函数该当解决参数的小标,也就是 argv 要解决参数的下表。optarg:是带有一个冒号的 optstring
opterr:此选项决定是否将谬误音讯打印到规范谬误中,如果是 0 的话,就不打印谬误了。上面是一个例子和对应的输入。


接下来解说 getopt_long 函数,后面说过,此函数可能解决所有的参数
函数原型:int getopt_long(int argc, char * const argv[],   const char *optstring,   const struct option *longopts, int *longindex);
此函数多了两个参数第一个参数构造如下。

struct option {

           const char *name;
           int         has_arg;
           int        *flag;
           int         val;
       };
name:此局部代表长选项的名称。has_arg:此构造有几个宏为其赋值。no_argument(0):代表没有对应的值
     required_argument(1):代表肯定须要一个值。optional_argument(2):代表有没有对应的值都能够。flag:如果此选项不为空的话,那么将参数对应的 val 赋值给 flag,否则返回。val:就是咱们要返回后者付给 flag 对应的 value。longindex:如果此选项不为空的话,那么它将指向绝对于 longopts 对应的下标。上面是我给出的一个例子:和一些输入。

getopt_long_only 与上述 getopt_long 不同之处:前者不论是“-”还是“--”都视为长选项,如果找不到的话,才去短选项哪里查找:

正文完
 0