技术专栏
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;
}
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
6
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据
相关专栏
-
浏览量:691次2024-01-02 09:46:50
-
浏览量:3739次2020-09-07 14:06:47
-
2023-07-05 10:11:14
-
浏览量:3630次2020-09-07 13:50:25
-
浏览量:7233次2020-12-06 16:44:26
-
浏览量:12698次2020-12-01 19:16:14
-
浏览量:695次2023-10-13 17:19:32
-
浏览量:6284次2020-12-20 20:54:26
-
浏览量:1941次2020-06-24 15:44:51
-
浏览量:8954次2021-06-21 11:49:58
-
浏览量:1079次2023-09-08 15:20:45
-
浏览量:2288次2020-08-18 20:05:11
-
浏览量:5228次2021-03-16 23:20:06
-
浏览量:10985次2021-07-23 15:56:25
-
浏览量:29896次2021-01-05 15:11:35
-
浏览量:2023次2020-08-14 18:38:14
-
浏览量:2606次2020-07-07 09:24:18
-
浏览量:3418次2020-08-14 18:36:42
-
浏览量:2161次2022-07-08 09:47:17
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
big_anana
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注