首先先看一下判断字符串是否为IP地址(IPv4地址是否合法)的方法:
(【C语言】判断字符串是否为IP地址(IPv4地址是否合法))

#include <stdio.h>
#include <string.h>
#include <stdbool.h>/*** @brief 判断IPv4地址是否合法* @param ip: 待校验的ip地址* @return true: 校验成功  false:校验失败(IP地址不合法)* @author PJW*/
bool IPv4_verify(char *ip) {int a,b,c,d;char t;if (4 == sscanf(ip,"%d.%d.%d.%d%c",&a,&b,&c,&d,&t)){if (0<=a && a<=255&& 0<=b && b<=255&& 0<=c && c<=255&& 0<=d && d<=255) {return true;}}return false;
}void main() {char ip[50]="192.1.2.3.4567";// char ip[50]="192.1.2.3";bool res = IPv4_verify(ip);if(true == res){printf("[%s] is valid IPv4\n", ip);}else{printf("[%s] is invalid IPv4\n", ip);}
}

执行结果:

然后根据以上方法,修改为从一个复杂的字符串中提取出IPv4地址:

#include <stdio.h>
#include <string.h>
#include <stdbool.h>/*** @brief IPv4地址提取* @param str: 待提取的字符串* @param len: 待提取的字符串长度* @param out_ip: 提取到的 IPv4 地址* @return true: 提取成功    *           false:提取失败(IP地址不存在或不合法)* @author PJW* @date 2021/07/01*/
bool IPv4_GET(char *str,int len,char *out_ip) {int a,b,c,d;char *p = str;for(int i=0;i<len;i++){if((*p >= '0')&&(*p <= '9')){if(4 == sscanf(p,"%d.%d.%d.%d",&a,&b,&c,&d)){if (0<=a && a<=255&& 0<=b && b<=255&& 0<=c && c<=255&& 0<=d && d<=255) {sprintf(out_ip,"%d.%d.%d.%d\n",a,b,c,d);// printf("IPv4: %d.%d.%d.%d\n",a,b,c,d);  return true;}}}p++;}return false;
}void main() {char str[50]="+QIACT: 1,1,1,\"10.5.110.126\"";char ip[16]={0};bool res = IPv4_GET(str, strlen(str), ip);if(true == res){printf("Get a valid IPv4 address: %s\n", ip);}else{printf("No valid IPv4 address was obtained\n");}
}

执行结果:

【C语言】从字符串中提取IP地址最简洁的方法相关推荐

  1. 字符串双引号表示c语言,c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑)...

    c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下 问题:从c++文件中将std:string转 ...

  2. 字符串中提取IP地址

    // 带端口号的IP地址 QStringList getIpAddressAndPort(const QString & strText) {QStringList strList;QRegE ...

  3. C语言从一段字符串中提取IP地址的方法

    1. 需求 当前待解析字符串格式为: +CIFSR:STAIP,<Station IP address> +CIFSR:STAMAC,<Station MAC address> ...

  4. Java使用正则表达式从字符串中提取 IP 地址

    import java.util.regex.Matcher; import java.util.regex.Pattern;public class ExtractIP {public static ...

  5. 从字符串中提取IP子串(C语言)

    1 目标 ① 从字符串中提取IP子串 ② 验证IP字符串是否合法(IPV4) 2 代码 ① ip地址提取 /*** @brief : IPv4地址提取* @param in_ip : 待提取字符串* ...

  6. 使用 Python 从文件中提取 IP 地址

    让我们看看如何使用 Python 从文件中提取 IP 地址. 算法 : 为正则表达式导入 re 模块. 使用 open() 函数打开文件. 读取文件中的所有行并将它们存储在列表中. 声明 IP 地址的 ...

  7. 字符串中查找IP地址的正则表达式

    字符串中查找IP地址的正则表达式: IP地址:(2[0-4]\d|25[0-5]|[01]\d\d|\d\d|\d)\.(2[0-4]\d|25[0-5]|[01]\d\d|\d\d|\d)\.(2[ ...

  8. 如何从 Apache 和 NGINX 服务器的日志文件中提取 IP 地址

    作为系统管理员,您需要密切关注访问您网站的 IP 地址.服务器日志是此类信息的有用来源.它们包含您的服务器收到的每个请求的 IP 地址.日期时间.请求类型.URL.服务器响应等.在本文中,我们将了解如 ...

  9. python提取一段字符串中的ip地址

    代码如下: #!/usr/bin/env python3 # -*- coding:utf-8 -*-import re import osip_str = os.popen('cat /root/b ...

最新文章

  1. python格式化% 和 format
  2. MIT课程笔记①丨因果关系定义及潜在结果分析框架
  3. struts2教程(2)--配置
  4. 字符串常量前面的L的作用
  5. session 原理
  6. js中的数据类型分为两大类分别是什么_数据类型有这么重要吗?
  7. practice:在win2008R2上使用(NLB)网络负载均衡
  8. android项目模块导入eclipse编译报错,android环信demo导入eclipse编译出错
  9. keras利用flow_from_directoryt自己构建数据集
  10. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_18maven的java工程取mysql数据库...
  11. C#动态创建和动态使用程序集、类、方法、字段等(二)
  12. 如何使用摸瓜快速查手机apk加壳
  13. 高等数学第七版总结(同济大学版)
  14. C++之常用集合(总结)
  15. 嵌入式:ARM系列处理器详解与性能对比
  16. 使用嵌套循环打印图形
  17. arm linux 内核崩溃,用sysrq-trigger实现ARM Linux一键内核崩溃、一键关机、一键dump信息等...
  18. 【B站弹幕数据分析】B站独家付费番剧鬼灭之刃的前12集的弹幕数据分析
  19. 计算机无法进入增值税认证平台,增值税勾选认证平台无法进入是什么原因?其他网页都能打开,就这个网页打不开...
  20. 移动安全办公的难点在哪?

热门文章

  1. IDEA 自定义代码模板
  2. 【设计指南】避免PCB板翘,合格的工程师都会这样设计!
  3. 网点分布图怎么做,用地图制作客户分布图
  4. 麒麟子Javascript游戏编程零基础教程大纲
  5. 天刀霸王枪服务器怎么维护了,1月31日服务器例行维护公告(已完成)
  6. 【cvpr2022-论文笔记】《L2G: A Simple Local-to-Global Knowledge Transfer .... Semantic Segmentation》
  7. 《按自己的意愿过一生》语录二
  8. 读《魔鬼搭讪学》有感
  9. 【量化选基】中证500指数增强比300增强好吗?
  10. el-select 远程搜索时 没有箭头图标