命令解析函数getopt_long的用法

#include <stdio.h> #include <getopt.h> int do_name, do_gf_name; char *l_opt_arg; struct option longopts[] = { { "name", no_argument, NULL, 'n' }, { "gf_name", no_argument, NULL, 'g' }, { "love", required_argument, NULL, 'l' }, { 0, 0, 0, 0}, }; int main(int argc, char *argv[]) { int c; while((c = getopt_long(argc, argv, "l:", longopts, NULL)) != -1) { switch (c) { case 'n': printf("My name is LYR./n"); break; case 'g': printf("Her name is BX./n"); break; case 'l': l_opt_arg = optarg; printf("Our love is %s!/n", l_opt_arg); break; } } return 0; } 此函数支持长短选项。当程序运行时,getopt()函数会设置控制错误处理的几个变量:

char *optarg ──如果选项接受参数的话,那么optarg就是选项参数。
int optind──argv的当前索引,当while循环结束的时候,剩下的操作数在argv[optind]到argv[argc-1]中能找到。
int opterr──当这个变量非零(默认非零)的时候,getopt()函数为"无效选项”和“缺少选项参数”这两种错误情况输出它自己的错误消息。可以在调用getopt()之前设置opterr为0,强制getopt()在发现错误时不输出任何消息。
int optopt──当发现无效选项的进修,getopt()函数或者返回'?'字符,或者返回字符':'字符,并且optopt包含了所发现的无效选项字符。

其中短选项中,带单冒号的表示必须有参数,且参数和选项之间用空格隔开;带双冒号的表示必须有参数,但参数不能和选项用空格隔开,不带冒号的表示选项不能有参数。

你可能感兴趣的:(c,null,include)