知识屋:更实用的电脑技术知识网站
所在位置:首页 > 编程技术 > C语言编程

c语言中单引号和双引号的区别 c语言中单引号和双引号是什么意思

发布时间:2017-05-10 11:36:51作者:知识屋

c语言中单引号和双引号的区别 c语言中单引号和双引号是什么意思 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 <stdlib.h>


  // 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:%sn", ch_ip);


  for (k=0; k<strlen; k++) {


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


  // Dprintf("k-inx: %dn", k-inx);


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


  }


  else {


  inx = k + 1;


  // Dprintf("inx: %d, tmpBuf: %sn", inx, tmpBuf);


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


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


  continue;


  }


  // Dprintf("tmpBuf: %sn", tmpBuf);


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


  }


  // Dprintf("ipv4 is: ");


  // for (k=0; k<sizeof(ipv4.addr_ipv4); 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地址。


  问题解决。


(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜