【字符串解析】IP地址字段解析提取函数接口

  在嵌入式业务逻辑中,我们有时需要从配置文件、串口或者服务端接收的消息数据中进行字符串解析,来提取需要的目标字符串字段。通常我们会调用字符串处理相关的函数,例如strstr,strchr,sscanf等,再结合指针偏移来提取目标字段。实现这种方式的前提是,我们需要提前知道字符串固定的格式内容,如果待解析的字符串内容或者格式偏差的情况,那么我们编写好的字符串解析处理程序就不太适用了。以下是一个通用的对于从字符串中解析IP地址的函数接口,只要字符串中有完整的IP地址字段就会被提取出来。以供参考。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <regex.h>#define OUT
#define INchar extract_IPInfo(IN char *str, OUT char *ip)
{regex_t regex;regmatch_t pmatch[1];const char *pattern = "([0-9]{1,3}\\.){3}[0-9]{1,3}";int ret;// Compile the regular expressionret = regcomp(&regex, pattern, REG_EXTENDED);if (ret) {fprintf(stderr, "Could not compile regex\n");return 0;}// Execute the regular expressionconst char *p = str;while (regexec(&regex, p, 1, pmatch, 0) == 0) {// Extract the matched IP addressint start = pmatch[0].rm_so;int end = pmatch[0].rm_eo;strncpy(ip, p + start, end - start);ip[end - start] = '\0';// Print the matched IP addressprintf("Found IP: %s\n", ip);// Move the pointer forwardp += end;}// Free compiled regular expressionregfree(&regex);return 1;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据驱动决策:工单统计工具如何赋能企业精准运营

在当今这个数字化飞速发展的时代&#xff0c;企业对于内部运营效率的追求已经达到了前所未有的高度。你是否曾为了繁杂的工单统计管理而头疼不已&#xff1f;是否曾因为无法准确进行工单统计数据而错失商机&#xff1f;今天&#xff0c;我将向你展示一款革命性的工单统计工具&a…

Web前端经验汇总:深入探索与实战心得

Web前端经验汇总&#xff1a;深入探索与实战心得 在数字化时代的浪潮中&#xff0c;Web前端技术作为连接用户与互联网世界的桥梁&#xff0c;其重要性日益凸显。作为一名长期奋战在Web前端领域的开发者&#xff0c;我积累了一些宝贵的经验&#xff0c;并愿意在此与大家分享。 …

MBR40100CT-ASEMI无人机专用MBR40100CT

编辑&#xff1a;ll MBR40100CT-ASEMI无人机专用MBR40100CT 型号&#xff1a;MBR40100CT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;40A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;100V…

TypeScript中的枚举

在 TypeScript&#xff08;TS&#xff09;中&#xff0c;枚举&#xff08;Enum&#xff09;是一种特殊的数据类型&#xff0c;它允许我们为一组命名的数值&#xff08;称为枚举成员或枚举项&#xff09;定义常量集。TypeScript 中的枚举是 TypeScript 语言扩展的一部分&#xf…

el-date-picker中popper-class的使用,自定义时间框的弹出位置

el-date-picker中popper-class的使用,自定义时间框的弹出位置 问题解决方法 问题 有时候时间选择框会根据位置自动计算出现的位置.但有时会造成被遮挡的问题使用popper-class自定义时间弹框样式不生效问题 解决方法 使用popper-class时 不要放在<style scoped></st…

【数据分析】线性及逻辑回归模型和Python实现

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

深入了解python函数与函数内存使用

函数的定义 函数作为代码复用的基本单元&#xff0c;可以帮助我们组织代码、减少重复、提高可读性和可维护性。 在 Python 中&#xff0c;函数本质上是对象&#xff0c;可以赋值给变量、存储在数据结构中、作为参数传递和返回。 函数与内存 函数的加载和调用过程中&#xff…

冒泡排序、选择排序

冒泡排序 按照冒泡排序的思想&#xff0c;我们要把相邻的元素两两比较&#xff0c;当一个元素大于右侧相元素时&#xff0c;交换它们的位置&#xff1b;当一个元素小于或等于右侧相邻元素时&#xff0c;位置不变 大的往右丢&#xff08;往下沉&#xff09;&#xff0c;小的往…

移动应用开发大作业报告

1 基本信息 1.1 系统名称 中华字典 1.2 开发运行环境 开发环境&#xff1a;Windows 10 专业版&#xff0c;JDK 1.8&#xff0c;AndroidStudio 运行环境&#xff1a;Java SE Runtime Environment (JRE) 8 1.3 使用的核心技术 JFrame&#xff1a;作为实现界面的窗体类&…

2024大数据面试题汇总(更新中。。。)

技术一、JAVA 技术二、hadoop 1.hadoop及其组件 Hadoop是一个开源分布式计算平台架构,基于apache协议发布,由java语言开发。主要包括 HDFS(分布式文件管理系统) MapReduce(分布式计算框架) Yarn(资源管理器) 2.NameNode与SecondaryNameNode的区别与联系 区别 1)NameNode存储…

【数据结构与算法】最小生成树

文章目录 最小生成树&#xff08;MST&#xff09;定义 构造最小生成树Prim算法Kruskal算法 最小生成树&#xff08;MST&#xff09; 连通图的生成树包含图的所有顶点&#xff0c;并且只含有尽可能少的边。对于生成树来说&#xff0c;若砍去它的一条边&#xff0c;则会使生成树…

练习时长 1 年 2 个月的 Java 菜鸡练习生最近面经,期望25K

面经哥只做互联网社招面试经历分享&#xff0c;关注我&#xff0c;每日推送精选面经&#xff0c;面试前&#xff0c;先找面经哥 自我介绍&#xff1a;本人是练习时长 1 年 2 个月的 Java 后端菜鸡练习生。下面是我最近面试的面经&#xff1a; 百度 一面 约1h时间&#xff1a;2…

MySQL常见面试题自测

文章目录 MySQL基础架构一、说说 MySQL 的架构&#xff1f;二、一条 SQL语句在MySQL中的执行过程 MySQL存储引擎一、MySQL 提供了哪些存储引擎&#xff1f;二、MySQL 存储引擎架构了解吗&#xff1f;三、MyISAM 和 InnoDB 的区别&#xff1f; MySQL 事务一、何谓事务&#xff1…

二、从C语言到C++(二)

二、从C语言到C&#xff08;二&#xff09; bool 类型怎么打印 bool 类型的值 强弱类型C语言的类型系统C的类型系统总结 NULL 和 nullptrNULLnullptr示例 起别名使用 typedef使用 using 关键字&#xff08;C11及以后&#xff09;注意 void* 万能指针C语言中的 void*C中的 void…

Python类的优势及应用场景深度分析(代码封装与组织、继承与代码复用、多态与接口、状态管理与行为封装)(python class)

文章目录 Python 类的优势及应用场景深度分析1. 代码封装与组织1.1 封装性示例代码&#xff1a;用户账户管理 1.2 组织性 2. 继承与代码复用2.1 继承性示例代码&#xff1a;员工管理系统 3. 多态与接口3.1 多态性示例代码&#xff1a;图形渲染 4. 状态管理与行为的封装4.1 状态…

黄仁勋加州理工毕业典礼演讲:人工智能是我们这个时代最重要的技术

英伟达公司首席执行官黄仁勋周五&#xff08;6月14日&#xff09;在加州理工学院&#xff08;Caltech&#xff09;毕业典礼上发表演讲&#xff0c;鼓励毕业生在逆境中努力&#xff0c;不断寻求新的机遇。 黄说&#xff0c;加州理工学院因其毕业生受人尊敬而闻名&#xff0c;如…

【耐水好】强耐水UV胶水主要重视什么?

【耐水好】强耐水UV胶水主要重视什么&#xff1f; 应用性方面&#xff1a; 强耐水UV胶水主要重视以下几个方面&#xff1a; 耐水性&#xff1a;强耐水UV胶水经过精心调配和改良&#xff0c;以提供出色的耐水性能。这种胶水能够形成防水层&#xff0c;有效防止水分渗入并保护被…

ISCC2024 WriteUpReverse 迷失之门

Reverse 迷失之门 迷失之门 writeup解题思路 打开题目是一个压缩包解压后是一个.exe程序 按照做题顺序第一步查壳发现并没有壳将其拖入ida中进行查看 使用shiftF12进行字符串查看 发现flag字符了我们双击它 将光标移动到yes哪里右击空白地方打开交叉索引并按F5进行反汇编发现…

6月18日(周二)A股行总结:A股震荡收涨,车路云概念全日强势,10年、30年国债期货齐创新高

车路云概念股发力上涨&#xff0c;中海达、华铭智能等多股20CM涨停。半导体板块走强&#xff0c;中芯国际港股上涨近&#xff13;% 。白酒板块下跌&#xff0c;贵州茅台跌1.3% 。30年期及10年期国债期货主力合约均创上市以来新高。 周二&#xff0c;A股全日窄幅震荡 沪指收涨0…

IEEE 期刊、会议论文模板下载网站(TNNLS)

这是网址&#xff1a;IEEE-Template Selector. 1 现在TNNLS匿名 需要专用模板&#xff0c;如果不用会退回 2 选会刊&#xff08;trans&#xff09;&#xff0c;期刊&#xff08;journal&#xff09;&#xff0c;快报&#xff08;letters&#xff09;会议&#xff08;conferenc…