当前位置: 首页 > wzjs >正文

广州红盾信息门户网站wordpress thinkphp

广州红盾信息门户网站,wordpress thinkphp,查询网站收录命令,淘宝联盟做返利网站(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 注:使用说明部分参考豆包ai 1. 字符串与二进制流认知 许多时候,我们作为软件研发人员,会觉得 一段内存就是一串字符串;字符串就是一段内存; 概念上&#xff…

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
注:使用说明部分参考豆包ai

1. 字符串与二进制流认知

许多时候,我们作为软件研发人员,会觉得

  • 一段内存就是一串字符串;
  • 字符串就是一段内存;

概念上,往往会觉得,一段内存,一串字符串,两者许多时候可以指同一个对象的。

2. 函数参数

基于这个认知,我们就会觉得
strncmp 与 memcpy
strncpy 与 memcpy
好像差不多的样子,参数也差不多的样子呢

  1. 参数strncmp vs memcmp:
    int strncmp(const char *s1, const char *s2, size_t n);
    int memcmp(const void *s1, const void *s2, size_t n);

  2. 参数strncpy vs memcpy:
    char *strncpy(char *dest, const char *src, size_t n);
    void *memcpy(void *dest, const void *src, size_t n);

3. 混用分析

参数看起来也是差不多的样子,混用有没有问题呢?
答案是可能是有问题的,字符串理解成一段内存通常可以,一段内存理解成一串字符串可能会出问题。

如果对于字符串,使用两者可能不会造成功能的差异,把字符串当成二进制流没有太多功能上的问题,可能性能上有一些差异,但功能不会出错。字符串也是二进制流,二进制流包含了字符串。

如果对于二进制流,就要谨慎了,二进制流不一定是字符串,如果使用memcmp/memcpy没有功能问题,使用strncpy/strncmp可能就有问题了。因为二进制流不一定是字符串,字符串的’\0’结尾特点二进制并不具备,可能发生只处理了一部分,’\0’前的一部分。

4. 个人遇到的教训:

使用 if (strncmp(str1, str2, 6) == 0)比较下面两个二进制流数据
========= 二进制串1 =================
[0] 8 ‘\x8’ char
[1] 0 ‘\0’ char
[2] 0 ‘\0’ char
[3] 23 ‘\x17’ char
[4] 0 ‘\0’ char
[5] 88 ‘X’ char
========= 二进制串2 =================
[0] 8 ‘\x8’ char
[1] 0 ‘\0’ char
[2] 0 ‘\0’ char
[3] 16 ‘\x10’ char
[4] 0 ‘\0’ char
[5] 88 ‘X’ char

本来两个二进制流是不匹配的,明显看到从第四个字节开始,就不同了;
但是使用strncmp比较时,结果匹配上了;
原因就在于,第二个字节都是’\0‘字符,也就认为字符串都已经结束了,后续字节就不需要比较了导致的。
修改代码,函数换成memcmpy(str1, str2, 6)比较,两者是不匹配的。
对于二进制流比较,二进制流不同,不管内部有没有’\0’字符,不匹配才是期望的结果。

5. 使用说明

使用说明strncmp vs memcmp

  1. strncmp函数用于比较两个字符串的前n个字符。它以空字符(’\0’)作为字符串的结束标志,对字符串进行比较。
  2. memcmp函数用于比较两个内存区域的前n个字节。它不考虑空字符,只是单纯地按字节进行比较。

使用说明strncpy vs memcpy

  1. strncpy 函数用于将源字符串的前 n 个字符复制到目标字符串中。如果源字符串长度小于 n,则用空字符 ‘\0’ 填充目标字符串,直到复制了 n 个字符;如果源字符串长度大于等于 n,则不会自动添加字符串结束符 ‘\0’。
  2. memcpy 函数用于从源内存区域复制指定数量的字节到目标内存区域,它并不关心数据的类型,只是单纯地按字节复制。

6. 问题回顾

再次回顾函数的使用说明差异:

可以看出对于strncmp可能会因为效率,判定字符串的结束符’\0’之后,就不再往后比较了,与memcmp数据流比较的要求不同。

同理对于strncpy,也有特殊处理,对于已经找到’\0’的,后续的会按照’\0’填充目标字符串,这个也与memcpy的数据流copy初衷不同。

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)


文章转载自:

http://g99KY7Ra.xgjhy.cn
http://cmVE70Es.xgjhy.cn
http://cQRpXFJd.xgjhy.cn
http://VGFCFePp.xgjhy.cn
http://ObnuxzlX.xgjhy.cn
http://IUJRsRV7.xgjhy.cn
http://iVcqtX8f.xgjhy.cn
http://rV9emtr7.xgjhy.cn
http://ORyt63Av.xgjhy.cn
http://ANYpCI2y.xgjhy.cn
http://TH9ZE0kx.xgjhy.cn
http://ajM1GsZF.xgjhy.cn
http://NwrlJ0EJ.xgjhy.cn
http://QnmFji4l.xgjhy.cn
http://HiuL8nyk.xgjhy.cn
http://HIKpUBAp.xgjhy.cn
http://G6rbJq8m.xgjhy.cn
http://yg7m8zCF.xgjhy.cn
http://nvYa4nUb.xgjhy.cn
http://1ybSCweR.xgjhy.cn
http://RF4iAwLK.xgjhy.cn
http://uzB5Hbd0.xgjhy.cn
http://pkAViwcE.xgjhy.cn
http://5xSiE7Hz.xgjhy.cn
http://cauXuUh7.xgjhy.cn
http://xXW68f8s.xgjhy.cn
http://zND3S5Zl.xgjhy.cn
http://hEG2fe56.xgjhy.cn
http://HiBG3o42.xgjhy.cn
http://pD6ab6NV.xgjhy.cn
http://www.dtcms.com/wzjs/593929.html

相关文章:

  • 中工信融做网站怎么样怎么自己制作网页新闻
  • mvc做的网站怎么制作网站网页
  • 免费推广网站入口202好的网站建设哪家好
  • 百度搜不到 但搜关键词有的网站微信小程序推广引流怎么做
  • 长沙企业网站建设报价企业网站建设预算
  • 沈阳网站外包公司wid2008vps创建网站
  • 类似淘宝网 的淘宝客网站模板做外单网站
  • 优秀学习网站公司主页填什么
  • 制作网站分析商业模式not found的网站
  • 西宁做网站哪家好文档里链接网站地址怎么做
  • wordpress保存图片不显示网站怎样做seo推广
  • 平板电脑 做网站开发忻州做网站
  • 如何建立自己网站教程网站设计制作好么
  • 易语言编程软件做网站软文广告图片
  • 怎样做天猫 淘宝网站导购怎么开通微信小程序卖东西
  • 1000元做网站php做网站难么
  • 苏州乡村旅游网站建设策划书企业网站建设ppt介绍
  • 西宁公司网站设计采用模版建网站的缺点
  • 免展网站后台注册seo查询seo
  • 网站不用备案营销型企业网站诊断
  • 电子商务网站建设理论依据做psd模板下载网站
  • 可信网站申请电商网站费用
  • 川畅科技搜搜 网站设计巴中网站开发
  • 做汽车网站开题报告的意义企业vi设计调研
  • 西安东郊做网站一部手机怎么做电商
  • 形象墙设计抚州网站seo
  • 有些网站下方只有版权没有ICP常州比较有名的设计公司
  • 大学网站开发的流程wordpress手机登录插件
  • 广州建网站哪儿济南兴田德润简介做网站下一页
  • 微信上浏览自己做的网站吗有什么做旅游攻略的网站