getopt_long函数

getopt函数只能处理短选项,而getopt_long函数两者都可以,可以说getopt_long已经包含了getopt_long的功能。

#include <unistd.h> extern char *optarg; extern int optind, opterr, optopt; #include <getopt.h> int getopt(int argc, char * const argv[],const char *optstring); int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex); int getopt_long_only(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);

1、argc和argv和main函数的两个参数一致。 2、optstring: 表示短选项字符串。

形式如“a:b::cd:“,分别表示程序支持的命令行短选项有-a、-b、-c、-d,冒号含义如下: (1)只有一个字符,不带冒号——只表示选项, 如-c (2)一个字符,后接一个冒号——表示选项后面带一个参数,如-a 100 (3)一个字符,后接两个冒号——表示选项后面带一个可选参数,即参数可有可无, 如果带参数,则选项与参数直接不能有空格 形式应该如-b200

3、longopts:表示长选项结构体。结构如下:

struct option { const char *name; int has_arg; int *flag; int val; }; eg: static struct option longOpts[] = { { “daemon”, no_argument, NULL, D }, { “dir”, required_argument, NULL, d }, { “out”, required_argument, NULL, o }, { “log”, required_argument, NULL, l }, { “split”, required_argument, NULL, s }, { “http-proxy”, required_argument, &lopt, 1 }, { “http-user”, required_argument, &lopt, 2 }, { “http-passwd”, required_argument, &lopt, 3 }, { “http-proxy-user”, required_argument, &lopt, 4 }, { “http-proxy-passwd”, required_argument, &lopt, 5 }, { “http-auth-scheme”, required_argument, &lopt, 6 }, { “version”, no_argument, NULL, v }, { “help”, no_argument, NULL, h }, { 0, 0, 0, 0 } };
<

使用如下:

#define APP_VERSION “(” __DATE__ ” ” __TIME__ “)” static int init_param(int argc, char** argv) { int opt = 0; while ((opt = getopt(argc, argv, “va”)) != -1) { switch (opt) { case v: printf(“%d\n”,SOURCE_VERSION); // printf(APP_VERSION); exit(0); case a: printf(“%s\n”,SOFTVERSION); // printf(APP_VERSION); // printf(“\n”); exit(0); default: break; } } return 0; }

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:getopt_long函数 https://www.yhzz.com.cn/a/14241.html

上一篇 2023-05-12
下一篇 2023-05-12

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。