linux之getopt_long函数

getopt_long是GNU C的一个常用函数,我们在linux下使用各种命令的时候经常会输入各种选项,长选项或短选项,如果让我们自己解析这些选项,不仅工作繁琐,而且也违背软件复用的思想(毕竟选项是linux命令最普遍的一种用法),因此GNU的家伙们就开发出来这样一个函数帮助我们处理选项。
getopt_long(int argc,char * const argv[],const char * shortopts,const struct option *longopts,int *longindex)
下面介绍各个参数的含义:
argc、argv是main函数的两个同名的参数。
shortopts一般为一个字符串常量,代表所有的短选项,就是一般以“-”开头的选项,如果选项后带参数,则必须在相应的字符后面加“:”,如“ab:cde:”。
longopts是一个struct option结构体的数组,option结构体的定义如下:
struct option{
        
const <
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`getopt_long` 是一个 C 语言的函数,用于解析命令行参数。与传统的 `getopt` 函数不同,`getopt_long` 支持长选项(如 --help)和短选项(如 -h)。 下面是 `getopt_long` 的基本用法: ```c #include <stdio.h> #include <stdlib.h> #include <getopt.h> int main(int argc, char *argv[]) { int c; int digit_optind = 0; while (1) { int option_index = 0; static struct option long_options[] = { {"add", required_argument, 0, 0 }, {"append", no_argument, 0, 0 }, {"delete", required_argument, 0, 0 }, {"verbose", no_argument, 0, 0 }, {"create", required_argument, 0, 'c'}, {"file", required_argument, 0, 0 }, {0, 0, 0, 0 } }; c = getopt_long(argc, argv, "abc:d:012", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf("option %s", long_options[option_index].name); if (optarg) printf(" with arg %s", optarg); printf("\n"); break; case '0': case '1': case '2': if (digit_optind != 0 && digit_optind != optind) printf("digits occur in two different argv-elements.\n"); digit_optind = optind; printf("option %c\n", c); break; case 'a': printf("option a\n"); break; case 'b': printf("option b\n"); break; case 'c': printf("option c with value '%s'\n", optarg); break; case 'd': printf("option d with value '%s'\n", optarg); break; case '?': break; default: printf("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf("non-option ARGV-elements: "); while (optind < argc) printf("%s ", argv[optind++]); printf("\n"); } exit(EXIT_SUCCESS); } ``` 上面的代码演示了 `getopt_long` 的基本用法。其中 `long_options` 数组定义了长选项的名称、参数类型以及对应的短选项(如果有的话)。在调用 `getopt_long` 函数时,第三个参数为短选项字符串,其中冒号表示该选项需要参数。 函数返回值为下一个选项的字符编码,或者 -1 表示已经解析完所有选项。如果选项需要参数,则该参数存储在全局变量 `optarg` 中。 更多关于 `getopt_long` 的用法,可以参考其官方文档:http://man7.org/linux/man-pages/man3/getopt_long.3.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值