2019独角兽企业重金招聘Python工程师标准>>>

一、memcmp含义

Compare characters in two buffers.

int memcmp(    const void* buf1,    const void* buf2,    size_t count );inline int wmemcmp (   const  wchar_t* buf1, const wchar_t* buf2, size_t count);

Parameters

buf1    :  First buffer.

buf2    :  Second buffer.

count   : Number of characters.

Return Values   : The return value indicates the relationship between the buffers.

Return Value Relationship of First count Bytes of buf1 and buf2

< 0        buf1 less than buf2

0        buf1 identical to buf2

> 0

buf1 greater than buf2

二、memcmp与strcmp的区别

int   memcmp(const   void   *   cs,const   void   *   ct,size_t   count)

{

const   unsigned   char   *su1,   *su2;

int   res   =   0;

for(   su1   =   cs,   su2   =   ct;   0   <   count;   ++su1,   ++su2,   count--)

if   ((res   =   *su1   -   *su2)   !=   0)

break;

return   res;

 }

int   strncmp(const   char   *   cs,const   char   *   ct,size_t   count)

{

register   signed   char   __res   =   0;

while   (count)   {

if   ((__res   =   *cs   -   *ct++)   !=   0   ||   !*cs++)

break;

count--;

}

return   __res;

}

1、这两个函数的差别其实还是挺大的,差别在这里:

对于memcmp(),如果两个字符串相同而且count大于字符串长度的话,memcmp不会在\0处停下来,会继续比较\0后面的内存单元,直到_res不为零或者达到count次数。

对于strncmp(),由于((__res   =   *cs   -   *ct++)   !=   0   ||   !*cs++)的存在,比较必定会在最短的字符串的末尾停下来,即使count还未为零。具体的例子:

char   a1[]="ABCD";

char   a2[]="ABCD";

对于memcmp(a1,a2,10),memcmp在两个字符串的\0之后继续比较

对于strncmp(a1,a2,10),strncmp在两个字符串的末尾停下,不再继续比较。

所以,如果想使用memcmp比较字符串,要保证count不能超过最短字符串的长度,否则结果有可能是错误的。

2、strncmp("abcd",   "abcdef",   6)   =   0。比较次数是一样的:

memcmp:在比较到第5个字符也就是'\0',*su1   -   *su2的结果显然不等于0,所以满足条件跳出循环,不会再进行后面的比较。我想在其他情况下也一样。

strncmp:同样的道理再比较到第5个字符时结束循环,其实strncmp中“!*cs++”完全等同于“!*ct++”,其作用仅在于当两个字符串相同的情形下,防止多余的比较次数。

转载于:https://my.oschina.net/ifraincoat/blog/476445

memcmp与strcmp区别相关推荐

  1. 【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别

    模拟实现内存比较函数memcmp: 该函数与strcmp有相似之处,都可用于字符串比较是否相同,若相同,则返回0值.若前者大于后者,则返回大于0的整型值,否则返回小于0的整型值.  区别在于: str ...

  2. memcpy和strcpy的区别及memcmp和strcmp的区别

    strcpy与memcpy的区别: strcpy的原型:char *strcpy(char *dest, const char *src) strcpy是拷贝字符串.①不指定长度②以\0为标志结束(即 ...

  3. memcmp和strcmp的返回值

    注意,无论是内存比较还是字符串比较,这两个函数的返回值的意义是一样的. 如果相同,返回0 如果前面大于后面,返回大于0 如果前面小于后面,返回小于0 一定要注意,相同的时候是0,不是true. 转载于 ...

  4. C/C++中的字符串比较函数strcmp/memcmp/CString.Compare/CString:CompareNoCase

    memcmp和strncmp的区别 一.memcmp含义 Compare characters in two buffers. int memcmp( const void* buf1, const ...

  5. c语言中 compare函数,C/C++中的字符串比较函数strcmp/memcmp/CString.Compare/CStrin

    memcmp和strncmp的区别 一.memcmp含义 Compare characters in two buffers. int memcmp(    const void* buf1,    ...

  6. 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)

    https://blog.csdn.net/hanjing_1995/article/details/51539583 strcpy 拷贝源字符串到子字符串,包括'\0'. 代码实现: [cpp] v ...

  7. linux常用c函数(中文版)

    都是linux的c函数东西略多,用页面搜索来查找吧. << Back to man.ChinaUnix.net isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isd ...

  8. strncasecmp与strcasecmp用法

    strcasecmp strcasecmp(忽略大小写比较字符串) 相关函数 bcmp,memcmp,strcmp,strcoll,strncmp 表头文件 #include<string.h& ...

  9. C++语言篇 第六章 字符数组及函数(不能用在string字符串中)

    字符数组 数组中的每个元素都是一个字符的数组称为"字符数组".有时,把一维字符数组又称为"字符串".定义字符数组的方法与定义其他类型数组的方法类似. 对于字符数 ...

最新文章

  1. [精]Odoo 8.0深入浅出开发教程-模块开发基础
  2. 资源 | 这是你要的Keras官方中文版(附文档链接)
  3. Pytorch张量tensor的使用
  4. qpython3安装lxml_centos python安装lxml报错
  5. 下面使用计算机动画制作的,2020年最新电大《计算机二维动画制作》形考作业任务01-03网考试题及答案(10页)-原创力文档...
  6. ubuntu百度网盘下载大文件
  7. 我阅读的第一个程序GridView遇到的问题
  8. 牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案
  9. 【数据挖掘】挖掘建模-回归分析(1)
  10. S1304第一本书内测测试分析
  11. 计算机的发展导致了计算思维的诞生,尔雅电子计算机的诞生(上)
  12. 常用的RS485芯片简介
  13. azure微软文字转语音工具​AzureTools​使用
  14. 如何在Word中插入大小合适的高清图片
  15. Html5 打砖块游戏,加入道具和速通模式(含源码)
  16. 用户发送的eth值msg.value,在合约中以wei为单位。
  17. Python编程-pypyodbc无驱动和无法打开注册表等错误的解决办法
  18. android 2.1你好八月,八月你好优美句子
  19. android网络音乐播放器
  20. 从零搭建游戏服务器,拢共分几步?

热门文章

  1. java 2017腾讯面试题_腾讯2017刁难面试题,是不是大神就看你会做几题
  2. oracle log.xml分析,Oracle 11g Alert Log日志位置及参数
  3. python里安装mysql有错_尝试在Python3.4上安装MySQL时出错
  4. 客户端分析php代码,分享:一个简单的全网解析客户端代码。
  5. 20210101:力扣第42周双周赛(上)
  6. AWS服务器可以设置虚拟ip吗,《AWS云计算实战》3.使用虚拟服务器:EC2
  7. 缓存能提高多少 php,提高PHP编程效率 引入缓存机制提升性能
  8. wpf window 不执行show 就不能load执行_关于机器学习中的Scikit-Learn,你不知道的10个实用功能...
  9. greys的简单使用
  10. 你真的了解特洛伊木马吗!