0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

getopt参数解析

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-08-19 11:26 次阅读

getopt参数解析

  getopt()用来分析命令行参数。

1.短形参解析getopt

#include 
int getopt(int argc, char * const argv[],const char *optstring);
 extern char *optarg;
 extern int optind, opterr, optopt;
函数功能:短形参解析
 形 参:argc、argv main函数参数
    optstring 短形参格式。例:a: b::cv
          一个’:’表示必带参数
          两个’::’表示可带参数,带参数时第一参数必须和b之间不能有空格
          没有’:’表示可选参数
 返回值:解析成功返回短形参
     解析失败返回?
     解析完成返回-1
   全局变量:
 optarg – 保存短形参后面的第一个参数(必带参数和可带参数才能得到)
 optind – 再次调用 getopt() 时的下一个 argv 指针的索引
 opterr – 错误值信息
 optopt – 参数解析失败是返回短形参值,成功则为0
#include 
#include 
int main(int argc,char *argv[])
{
	int opt;
	int cnt;
	while(1)
	{
		opt=getopt(argc,argv,"a:b::vh");
		if(opt==-1)break;
		cnt=optind;
		switch(opt)
		{
			case 'a':
				printf("参数:%c\n",opt);
				printf("\t内容:%s\n",optarg);
				while(cnt

2.长形参解析getopt_long


#include 
int getopt_long(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);
函数功能:长形参解析
形 参:argc、argv main函数参数
    optstring 短形参格式。例:a: b::cv
            一个’:’表示必带参数
            两个’::’表示可带参数,带参数时第一参数必须和b之间不能有空格
            没有’:’表示可选参数
     longopts 长形参结构体
        struct option {
            const char *name; //长形参名
            int has_arg; //参数选择标志
            int *flag; //一般填NULL
            int val; //长形参解析成功返回标志信息
            };
        has_arg:
            #define no_argument 0 //不需要参数
            #define required_argument 1 //必须指定参数
            #define optional_argument 2 //参数可选
    Longindex:解析成成功返回的长形参结构体数组下标
返回值:解析成功返回短形参
    解析失败返回?
    解析完成返回-1

  getopt_long完全兼容getopt短形参解析功能;在使用getopt_long实现长形参解析时,初始化长形参longopts时最后一个结构体成员一定要设置为全为0,否则会段错误。


#include 
#include 
struct option loqngopts[]=
{
	{"version",no_argument,NULL,'v'},//不带参数
	{"help",no_argument,NULL,'h'},//不带参数
	{"prefix=",required_argument,NULL,'p'},//必带参数
	{"a123",optional_argument,NULL,'a'},//可选参数
		{0,0,0,0}, //最后一个成员必须全为0
	
};
int main(int argc,char *argv[])
{
	int index;
	int opt;
	int cnt;
	while(1)
	{
		opt=getopt_long(argc,argv,"a:b::vh",loqngopts,&index);
		if(opt==-1)break;//解析完成
		cnt=optind;
		switch(opt)
		{
			case 'a':
				printf("index=%d\n",index);
				if(index<=sizeof(loqngopts)/sizeof(struct option))//长形参
				{
					printf("长形参:%s\n",loqngopts[index].name);
					if(optarg!=NULL)
					{
						printf("\t内容:%s\n",optarg);
					}
					while(cnt)>
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 参数
    +关注

    关注

    11

    文章

    1457

    浏览量

    31694
  • getopt
    +关注

    关注

    0

    文章

    4

    浏览量

    1877
收藏 人收藏

    评论

    相关推荐

    求教!!!如何利用labview串口对惯导模块进行参数解析,有协议!!!

    求教!!!如何利用labview串口对惯导模块进行参数解析,有协议!!!
    发表于 03-17 19:59

    如何解析从串口接收到的字符串中提取的命令和数字参数

    如何解析从串口接收到的字符串中提取命令和数字参数
    发表于 11-22 11:56

    如何解析stm32从串口接收到的字符串中提取命令和数字参数

    如何解析stm32从串口接收到的字符串中提取命令和数字参数
    发表于 12-13 16:47

    《运算放大器参数解析与LTspice应用仿真》+学习心得3第二章之电气参数

    非常感谢作者郑荟民!非常感谢电子发烧友论坛!非常感谢人民邮电出版社!非常感谢中国工信出版集团!非常感谢给的这一次试读机会! 《运算放大器参数解析与LTspice应用仿真》作者简介:郑荟民,副高
    发表于 10-05 21:33

    请问如何解析从串口接收到的字符串中提取命令和数字参数

    如何解析从串口接收到的字符串中提取命令和数字参数
    发表于 10-23 06:13

    电感储能型脉冲电源系统的半解析参数分析

    电感储能型脉冲电源系统的半解析参数分析_丁健民
    发表于 01-04 16:45 0次下载

    Linux MTD下获取Nand flash 各个参数的过程的详细解析

    Linux MTD下获取Nand flash 各个参数的过程的详细解析
    发表于 10-30 08:38 7次下载
    Linux MTD下获取Nand flash 各个<b class='flag-5'>参数</b>的过程的详细<b class='flag-5'>解析</b>

    什么是高频板?详细解析高频板参数

    本文开始介绍了高频板的概念和高频板线路板特点,其次详细解析了高频板参数,最后介绍了高频板的生产流程。
    发表于 05-03 16:05 3.5w次阅读

    学会在Linux下使用getopt函数来获取传入的参数

    在linux下有一个函数叫getopt就可以写成-r -l -i 的形式,下面是一个使用openssl通信的程序,需要4个参数服务器ip -i、服务器端口-p、证书地址-c、私匙地址-s代码如下,重点看while循环
    发表于 05-06 17:17 1102次阅读

    Linux系统中getopt_long及其使用

    ,          0, NULL, 0}      };调用时需要把main的两个参数argc和argv以及上述两个数据结构传给getopt_long。每次调用getopt_long,它会
    发表于 04-02 14:33 1690次阅读

    MXNet源码解读笔记一 ---- 如何解析参数文件

    本文主要内容是解读MXNet是加载模型参数文件并解析得到NDArray所涉及到的代码,希望读者读完本文能对MXNet参数文件的格式有清晰的了解,...
    发表于 02-07 11:12 0次下载
    MXNet源码解读笔记一 ---- 如何<b class='flag-5'>解析</b><b class='flag-5'>参数</b>文件

    TI eSMO 库Fsmopos和Gsmopos参数解析

    TI eSMO 库Fsmopos和Gsmopos参数解析
    发表于 10-28 12:00 2次下载
    TI eSMO  库Fsmopos和Gsmopos<b class='flag-5'>参数</b><b class='flag-5'>解析</b>

    MOSFET数据手册常见参数解析——EASIGSS/Rds(on)/Coss

    MOSFET数据手册常见参数解析——EASIGSS/Rds(on)/Coss
    的头像 发表于 06-19 09:53 974次阅读
    MOSFET数据手册常见<b class='flag-5'>参数</b><b class='flag-5'>解析</b>——EASIGSS/Rds(on)/Coss

    IGBT单管数据手册参数解析(上)

    这篇文章是《英飞凌工业半导体》系列原创文章的第204篇,IGBT单管数据手册参数解析(上)
    发表于 12-06 11:54 25次下载

    IGBT单管数据手册参数解析(下)

    这篇文章是英飞凌工业半导体微信公众号系列原创文章第205篇,IGBT单管数据手册参数解析(下)
    发表于 12-06 11:56 18次下载