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

问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来;

解决办法:1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111;

可以从第一个字符开始解析,当不是'.'时,将所有字符保存下来,然后把所有保存下来的字符转换为16进制就可以了;

2. 程序如下:

typedef struct {

char addr_ipv4[4];

} IPADDR_IPV4;

#include

// Function: To extract HEX value of IP address from string expression.

IPADDR_IPV4 parse_IPString(const char *str, u8 strlen) {

IPADDR_IPV4 ipv4;

char tmpBuf[4] = {0};

u8 k;

u8 inx = 0;

u8 j = 0;

// Dprintf("The ch_ip is:%s\n", ch_ip);

for (k=0; k

if (str[k] != '.') {

// Dprintf("k-inx: %d\n", k-inx);

memcpy(&tmpBuf[k-inx], &str[k], 1);

}

else {

inx = k + 1;

// Dprintf("inx: %d, tmpBuf: %s\n", inx, tmpBuf);

ipv4.addr_ipv4[j++] = strtol(tmpBuf, NULL, 10);

memset(tmpBuf, 0, sizeof(tmpBuf));

continue;

}

// Dprintf("tmpBuf: %s\n", tmpBuf);

ipv4.addr_ipv4[j] = strtol(tmpBuf, NULL, 10);

}

// Dprintf("ipv4 is: ");

// for (k=0; k

//  Dprintf("%d", ipv4.addr_ipv4[k]);

// }

// Dprintf("\n");

return ipv4;

}

应用如下:

char* ch_ip = NULL;

IPADDR_IPV4 ipv4Addr;

ch_ip = (char*)malloc(16);

memset(ch_ip, 0, 16);

// parse IP address

ch_ip = getIPAddr();

// convert IP address from string to HEX expression

ipv4Addr = parse_IPString(ch_ip, strlen(ch_ip));

3. 注意事项:原来进行字符比较的时候,用的是if (str[k] != ".")而不是if (str[k] != '.'),结果一直不对。

后来反复 查找原因,才知道单引号''和双引号“”的区别:

(1)。含义不同。单引号引起的一个字符代表一个整数,整数值对应于该字符在ASCII字符集中的序列值;

双引号引起的都是字符串,哪怕只有一个字符也是字符串,双引号引起的一个字符代表一个指向无名数组起始字符的指针;

比如:'.'代表十进制46,十六进制0x2E;

而"."代表指向起始字符为"."的某数组的指针;

(2)。大小不同。单引号引起的一个字符大小就是一个字节;

双引号引起的一个字符大小是两个字节,因为双引号引起的字符串会在字符串的末尾添加一个0x00作为字符串的结束标识。

在本人的程序中正确取到了IP地址。

问题解决。

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

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

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

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

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

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

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

  4. 字符串中提取IP地址

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

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

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

  6. 正则表达式实现提取IP地址字符串

    获取IP的话一般使用ifconfig 虽然网上很多用grep或者awk的,但是如果没有这些库的话怎么匹配字符串呢? 提取ip地址我的思路是先system(ifconfig > file) 输出到 ...

  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. python提取一段字符串中的ip地址

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

  9. 从任何字符串中提取IP

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

最新文章

  1. Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
  2. LeetCode Decode Ways(动态规划)
  3. mybaits二十三:二级缓存
  4. python 发送邮件解决所有乱码问题
  5. HP 3055 恢复出厂
  6. linux显示界面指令规范,linux的常规操作命令
  7. 反思学习方法:后推前 前推后
  8. 使用 VMware + win10 + vs2019 从零搭建双机内核调试环境
  9. html获取data-*值,html5 获取和设置data-*属性值的四种方法讲解
  10. js操作select相关方法(收集)
  11. 【Luogu2085】最小函数值(优先队列)
  12. 概率论与数理统计——贝塞尔校正(Bessel‘s Correction)
  13. LIstView和TreeView相关联
  14. 三菱PLC 串口通信开发心得经验
  15. 通过AndroidStudio找到数据库文件
  16. TOM邮箱,那个陪我走过20多年的邮箱
  17. Tether市值十月下跌超过10亿美元
  18. window8系统 dns有问题怎么修复,浏览器代理设置,浏览器提示网页无法显示
  19. 从投资人发现“新大陆”,看“产融星城”为何成?
  20. 通过ADVICE来实现按功能进行权限控制

热门文章

  1. 如何将电梯门禁卡复制到手机/手环上
  2. 商业Web应用程序的用户界面设计
  3. 警告 [http-nio-8080-exec-4] org.springframework.web.servlet.DispatcherServlet
  4. 【Hive】Hive入门解析(一)
  5. 读书笔记1 PPT设计之道
  6. 无聊记录下爬取虎牙录播
  7. python购物街竟价项目_python制作视频教程下载地址
  8. Python文档算法整理
  9. Java项目导入方法
  10. 11 个非常有用的 HTML One-Liners