void getHostIP(char* hostIP,const char* sourceStr)
{
 char nbuf[4];
 int sn[4];
 int i,ret,start,n,m;
 int runnum=0;
 start = 0;

while (1)
 {  
  runnum++;
  //第一个数大于255的情况
  if (runnum > 1)
  {
   ret=RE_ERR;
   for (i=start+1;i<strlen(sourceStr);i++)
   {
    if (sourceStr[i]<'1' || sourceStr[i]>'9')
    {
     start = i;
     ret=RE_OK;
     break;
    }
   }

if(ret==RE_ERR)
   {
    break;
   }
  }

//查找第一个数为数字的
  ret=RE_ERR;
  for (i=start;i<strlen(sourceStr);i++)
  {
   if (sourceStr[i]>='1' && sourceStr[i]<='9')
   {
    start = i;
    ret=RE_OK;
    break;
   }
  }

if(ret==RE_ERR)
  {
   break;
  }

//在剩余的字串中是否含有三个点
  n=0;
  for (i=start;i<strlen(sourceStr);i++)
  {
   if (sourceStr[i]=='.')
   {
    n++;
   }
  }

if (n<3)
  {
   ret = RE_ERR;
   break;
  }

ret=RE_ERR;
  memset(nbuf,0,sizeof(nbuf));
  for (i=start,m=0,n=0;i<strlen(sourceStr);i++)
  {

if (sourceStr[i]>='0' && sourceStr[i]<='9')
   {

if(n<3)
    {
     nbuf[n]=sourceStr[i];
     ret=RE_OK;
    }
    else
    {
     ret=RE_ERR;
     break;
    }
    n++;
   }
   else if (sourceStr[i]=='.')
   {
    if (strlen(nbuf)==0)
    {
     ret=RE_ERR;
     break;
    }

sn[m] = atoi(nbuf);
    if (sn[m] <= 255)
    {
     m++;
     n=0;
     memset(nbuf,0,sizeof(nbuf));
     if (m==4)
     {
      ret=RE_OK;
      break;
     }  
    }
    else
    {
     ret=RE_ERR;
     break;

}
   }
   else
   {
    break;
   }
  }

if (m==3)
  {
   if (ret==RE_OK)
   {
    if (strlen(nbuf)==0)
    {
     ret=RE_ERR;
    }
    else
    {
     sn[3]=atoi(nbuf);
     if (sn[3] <= 255)
     {
      ret=RE_OK;
     }
     else
     {
      ret=RE_ERR;
     }
    }
   }
  }
  else
  {
   if (m!=4)
   {
    ret=RE_ERR;
   }   
  }

if (ret==RE_OK)
  {
   break;
  }
  else
  {
   continue;
  }
 }

if (ret==RE_OK)
 {
  sprintf(hostIP,"%u.%u.%u.%u",sn[0],sn[1],sn[2],sn[3]);
 }
}

从任何字符串中提取IP相关推荐

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

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

  2. 【C语言】从字符串中提取IP地址最简洁的方法

    首先先看一下判断字符串是否为IP地址(IPv4地址是否合法)的方法: ([C语言]判断字符串是否为IP地址(IPv4地址是否合法)) #include <stdio.h> #include ...

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

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

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

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

  5. 字符串中提取IP地址

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

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

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

  7. java从字符串中提取数字

    1.做一下操作时会一般会用到提取数字操纵: a.列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b.当新添加的数据放在第一条或者最后一条时,则不需要翻页,只 ...

  8. 【转】SQL函数:字符串中提取数字,英文,中文,过滤重复字符

    SQL函数:字符串中提取数字,英文,中文,过滤重复字符 --提取数字 IF OBJECT_ID('DBO.GET_NUMBER') IS NOT NULL DROP FUNCTION DBO.GET_ ...

  9. R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符、str_sub函数指定起始位置和终止位置替换子字符串

    R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符.str_sub函数指定起始位置和终止位置替换子字符串 目录

最新文章

  1. 【统计图】Echarts实现多条折线图渐变堆叠效果
  2. BZOJ1449[JSOI2009]球队收益BZOJ2895球队预算——最小费用最大流
  3. zblog如何调用HTML,Zblog调用栏目文章的方法
  4. java 自定义注解以及获得注解的值
  5. Codeforces Round #656 (Div. 3) F. Removing Leaves 贪心 + 模拟
  6. LS 24 Bracket sequence(DP)
  7. 7-4 输出最小公倍数 (9 分)
  8. 这些C4D创意卡通色彩场景,简直酷到爆炸!
  9. C#中winform怎么在线预览PDF,预览网上的PDF控件!不用安装Adobe PDF Reader等等其他,方案记录
  10. php 中国姓名验证规则,我想在表单验证中加入中文姓名合法性模糊匹配判断?...
  11. matlab读取txt文件
  12. 关于百度地图(二):只需要定位,不需要地图(什么?回调混乱?一招解决!)
  13. sd u盘 速度测试软件,u盘速度测试(FlashBench)sd卡速度测试
  14. delphi 安装控件时提示系统找不到指定的模块的解决
  15. python基础编码规范_Python语言的基本语法和编码规范.ppt
  16. 论坛发帖页面html,为Discuz门户文章和论坛帖子页面添加分享按钮
  17. 【bootstraptable】JS访问用户媒体设备摄像头,进行拍照保存
  18. zoc7中文乱码问题解决方法
  19. 绘图杂记【3】Python / R语言 制作峰峦图
  20. 华师大网络学院计算机,华师大网络学院计算机原理作业.doc

热门文章

  1. win10中最常用快捷键大全
  2. Vue父子组件生命周期的先后顺序
  3. python爬虫好友图片_用itchat库爬取你所有微信好友的头像,并合成一张大图
  4. SQL中英文混合排序
  5. 矩阵分析之 实矩阵分解(2)LU,PLU分解
  6. 信息安全--三:BLP模型(Bell-La Padula模型)
  7. 教育的未来,会是什么样子?
  8. Windows10专业版任务栏右下角按钮左键无效右键有效的问题的解决
  9. 航海王燃烧意志服务器维护是什么,航海王燃烧意志12月6日更新了什么 航海王燃烧意志更新维护公告...
  10. cherry-pick的定义和使用方法