memcmp与strcmp函数

比较函数大合集:strcmp,strncmp,memcmp 比较函数三兄弟:strcmp,strncmp,memcmp。 刷到就是赚到,看到就是学到!!比较函数看这一篇足以! 看完保证你对于三个函数理解透彻到底。 阅读详情

函数:int memcmp (const void *a1, const void *a2, size_t size) 
       函数memcmp用于比较字符串s1与s2的前size个字符。 
      如果两上字符块相同,memcmp将返回0。

函数:int strcmp (const char *s1, const char *s2) 
       这个函数用来比较s1和s2字符串,这个函数将返回一个值,它的符号与第一对不同的字符的比较结果相关。 
      如果两个字符串相等的话,strcmp将返回0。 
       如果s1是s2的一个子串的话,s1小于s2 
此外还有函数 
    int strncmp (const char *s1, const char *s2, size_t size) 
    此函数与strcmp极为类似。不同之处是,strncmp函数是指定比较size个字符。也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0。

功能比较:

     二者都可以用于字符串的比较,但是二者是有比较大的差异的,因为strcmp是按照字节(byte-wise)比较的,并且比较的过程中会检查是否出现了"/0"结束符,一旦任意一个字符串指针前进过程中遇到结束符,将终止比较。而memcmp函数是用于比较两个内存块的内容是否相等,在用于字符串比较时通常用于测试字符串是否相等,不常进行byte-wise的字符串比较。如果要比较的对象中包含一些由于边界对齐需求而填入结构对象中的空格、联合 (union)结束的额外空格、字符串所分配的空间未使用完的部分引起的“holes”的话,最好使用memcmp来完成。这些“holes”的内容是不确定的,在执行byte-wise比较时结果也是不明确的。

效率差异: 
     strcmp比较的字符串,而memcmp比较的是内存块,strcmp需要时刻检查是否遇到了字符串结束的 /0 字符,而memcmp则完全不用担心这个问题,所以memcmp的效率要高于strcmp

s1,s2为字符串时候
memcmp(s1,s2,1)就是比较s1和s2的第一个字节的ascII码值;
memcmp(s1,s2,n)就是比较s1和s2的前n个字节的ascII码值;如:
char *s1="abc";
char *s2="acd";
int r=memcmp(s1,s2,3);就是比较s1和s2的前3个字节,第一个字节相等,第二个字节比较中大小已经确定,不必继续比较第三字节了
所以r=-1
原型:extern int memcmp(void *buf1, void *buf2, unsigned int count); 
用法:#include <string.h> 
功能:比较内存区域buf1和buf2的前count个字节。
说明: 当buf1<buf2时,返回值<0 
            当buf1=buf2时,返回值=0 
            当buf1>buf2时,返回值>0 

【C语言】memcpy memmove memset memcmp 四大内存操作函数(详解+用法+模拟实现) 【C语言】中四大内存操作函数(用法+模拟实现) 一、memcpy 内存拷贝函数 二、memmove 内存移动函数 三、memset 内存赋值函数 四、memcmp 内存比较函数 阅读详情

相关推荐

面试官问我memcmp和strcmp有啥区别?我这样回答直接拿了Offer(附Linux/Windows平台差异)

本文深入解析了memcmp和strcmp函数的核心差异,包括内存比较与字符串比较的不同场景、典型误用案例及平台实现差异(Linux/Windows)。通过对比分析,帮助开发者正确选择和使用这两个函数,避免常见陷阱,提升代码安全性和性能。

weixin_30315723的博客 308

[字符串和内存函数]strcmp和strncmp以及memcmp的区别

memcmp函数用于比较两个内存区域的内容。这个函数通过比较两个内存区域的字节进行操作,并返回一个整数值来表示比较结果。 如果返回值小于0,表示第一个内存区域小于第二个; 如果返回值大于0,表示第一个内存区域大于第二个; 如果返回值等于0,表示两个内存区域相等。 memcmp函数比较的是字节序列,不仅可以用来比较字符串,也可以用来比较其他类型的数据。strncmp是strcmp的一种变体函数,它除了比较两个字符串的内容外,还可以指定比较的长度。它接受三个参数,分别是要比较的两个字符串和要比较的长度。

caojunjia的博客 1767

C语言库函数:memcmp/strcmp和strncmp的区别

memcmp/strcmp和strncmp的区别memcmp/strcmp和strncmp的区别举例说明附录:源码实现 memcmp/strcmp和strncmp的区别 在C语言的string.h库中,有这样3个相似的函数:memcmp,strcmp,strncmp。他们的原型分别如下: /************************************************************************ *功能:把存储区 str1 和存储区 str2 的前 n 个字节进行比较

u013073067的博客 1813

memcpy与strcpy区别,memcmp与strcmp的区别

memcpy c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 中文名 内存拷贝函数 外文名 memcpy 功能 拷贝n个字节 返回值 指向dest的指针 函数原型 void *memcpy(void *dest, const void *src, size_t n); 功能 从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中 所需头文件 C...

modi000的博客 4272

更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法

前言: 不小心按了同意更新而且tf/sd卡损坏导致了3ds打开后都是出现 Anerror has occurred:(红色的) Failed to apply 1 FIRM patch(es). Press any button to shotdown 这样的画面,按了任意键后就关机,我找了很多资料和大佬的回答解决了这些问题,现在记录一下。 一.不小心按了更新导致上述的画面 原因:是因为系统升级了,但是里面的Luma3DS还没有更新,属于是更新了但没有完全更新的状态。 **修复方法** 1.首先请按

give_me_fish的博客 1万+

Ubuntu20.04下运行VINS系列:VINS-Mono、VINS-Fusion和GVINS

安装好了VINS-Mono所需的ROS noetic、Eigen3.4.0、Ceres2.10和OpenCV4.2.0等。VINS-Mono是在ROS melodic以及Ceres1的环境下开发的,因此需要适配高版本的环境。

zardforever123的博客 2万+

C语言字符串与内存比较函数详解:strcmp、strncmp与memcmp对比分析

C语言字符串与内存比较函数对比摘要 本文详细对比了C语言中三种关键比较函数:strcmp、strncmp和memcmp。strcmp用于字典序字符串比较,依赖'\0'终止符;strncmp增加长度限制,提升安全性;memcmp直接比较内存块,无视数据类型和终止符。三者核心区别在于:strcmp/strncmp基于ASCII字符值比较,memcmp比较原始字节值;前两者遇'\0'停止,后者严格比较指定字节数。strncmp适合前缀检查,memcmp处理二进制数据更安全。使用时需注意:返回值仅保证符号意义、跨平

张佳航的博客 1686

01-认识脑电信号及相关信号的预处理过程

脑电信号处理过程脑电实验为什么要预处理预处理方法降采样如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 脑电实验 本博客主要是记录基于脑电信号的情绪识别方法的研究...

脑机交流者的博客 7658

memcmp,memcpy,memmove,memset,strcat,strcmp,strcpy,strlen 8个函数的实现

为区别库函数,函数名首字母大写。 Memcmp函数: //内存区域内容比较函数 int Memcmp(const void *buf1,const void *buf2,unsigned int count) { unsigned int i=0; while(i<count) { if( ((char*)buf1)[i]!= ((char*)buf2)[i] )

ms347397173的博客 861

apm软件仿真+QGC地面站 环境搭建

本教程使用场景:apm软件仿真运行于虚拟机 ubuntu环境。qgc地面站位于windows 系统。两个环境在同一台电脑上。 一.apm仿真环境搭建 1.安装vm虚拟机及ubuntu 18。 2.ubuntu下 下载Ardupilot 飞控源码 并配置环境。 下载源码: git clone https://github.com/ArduPilot/ardupilot cd ardupilot git submodule update --init --recursive 配置所需运行的环境:

qthello 6110

信贷风控实战指南:Vintage分析表从数据建模到风险洞察

本文是一份信贷风控实战指南,详细阐述了Vintage分析从数据建模到风险洞察的全流程。文章深入解析了Vintage分析作为信贷资产“体检报告”的核心价值,并提供了从借据表与还款计划表设计、账龄计算、逾期口径判定到风险暴露计算与最终可视化透视的完整SQL实现方案,旨在帮助风控从业者构建精准的风险监控体系。

nft7creator的博客 321

memcmp ( ) 函数和strcmp( )函数的使用方法

一.memcmp()函数 头文件: #include<string.h> 函数: memcmp ( a , b , n );//a和b是两个数组,n 是你想要比较的长度; 结果: 如果a比b大,返回值大于0; 如果a比b小,返回值小于0; 如果a等于b,返回值等于0; 代码如下: #include<stdio.h> #include<string...

titi2018815的博客 1431

Python处理高光谱数据#3 降维

基于Python的高光谱降维操作 高光谱数据:点击此处可下载 用到的库:matplotlib、scipy、spectral 主要内容:主成分分析(PCA)与线性判别(LDA) 欢迎有兴趣的朋友交流指点。最后,废话不多说直接上代码???? import matplotlib.pyplot as plt from scipy.io import loadmat import spectral as spy

qq_273058791的博客 6936

strcmp和memcmp两个字符串比较函数

在C语言中经常遇到比较两个字符串大小的问题,这里我列出两个常用的比较函数以及它们的具体用法和两者之间的区别。strcmp函数: 函数原型:int strcmp(const char * s2,const char * s2);功能:比较字符串s1和字符串s2的大小。返回值: s1大于s2,返回值大于零 s1等于s2,返回值等于零 s1小于s2,返回值小于零特点:两个字符串之间是逐个按照它们

Tianzez的博客 3028

ADS基础教程23 - 有限元电磁仿真(FEM)可视化操作

一、引言 二、FEM可视化操作流程1.打开可视化界面2.查看介质的网格3.设置网格颜色4.选择网格5.传感器选择6.编辑传感器7.选择频率8.动画 三、总结介绍了在ADS中如何进行FEM仿真场视图操作过程。

XZ_ZC的博客 1815

工业质检封神!YOLOv8实战金属表面缺陷检测,自建数据集mAP突破95%

本文详细介绍了基于YOLOv8的金属表面缺陷检测实战方案。针对工业质检中的光照不均、纹理复杂、小样本等挑战,作者构建了12000张图像的数据集,提出针对性数据增强策略和两阶段训练方法。通过优化损失函数、调整超参数等技术手段,最终在测试集上达到95.1%的mAP@0.5,检测速度32FPS。相比传统方法,该方案在精度和鲁棒性上均有显著提升,为工业视觉质检提供了可复现的落地解决方案。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 428

memcmp和strcmp函数的实现

阅读了前面几篇文章都知道mem系列函数和str系类函数两个主要区别是:mem系类函数不受数据类型限制,但需要指定字节数,而str系列函数指明操作字符串,并且需要null字符结束。 如memcmp和strcmp函数的实现,如下所示 int memcmp(const void *cs, const void *ct, unsigned long count) { const unsigned c

coderlang 1320

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

c语言中strcpy,memcmp,strstr,strcmp函数作用

摘要:本文介绍了四种常用字符串和内存操作函数(strcpy, memcmp, strstr, strcmp)的标准库实现与自定义实现方法。strcpy用于字符串复制,memcmp比较内存块,strstr查找子串,strcmp比较字符串字典序。文章分析了各函数的终止条件和返回值,并强调安全注意事项:strcpy易导致缓冲区溢出,建议使用strncpy;memcmp适用于非字符串数据;strstr性能可优化。最后指出标准库函数效率高但需注意安全,自定义实现适合嵌入式等特殊场景,不同函数分别适用于字符串操作、固件

2303_76896902的博客 545

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

比较函数strcmp/memcmp性能分析

目录strcmp实现性能分析memcmp实现性能分析 strcmp 实现 性能分析 memcmp 实现 性能分析

legend050709的专栏 829

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

memcmp和strcmp函数

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); Paramete

FreshMan 1131

strcmp,strncmp ,memcmp函数

1:strcmp extern int strcmp(const char *s1,const char *s2); 当s1 当s1==s2时,返回值= 0; 当s1>s2时,返回正数。 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。 能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字

farmwang的专栏 806

字符串函数strcmp(),strncmp(),memcmp()等函数

strcmp()函数         只能比较字符串   extern int strcmp(const char *s1,const char *s2); 1.strcmp函数实际上是对字符的ASCII码进行比较,实现原理如下: 首先比较两个串的第一个字符,若不相等,则停止比较并得出两个ASCII码大小比较的结果;如果相等,就接着比较第二个字符然后第三个字符等等。无论两个字符串是什么样,s

qq_40572211的博客 443

strcpy、strcat、strcmp、strstr、memchr、memcmp、memcpy、memmove、memset函数说明

本文介绍了C语言中常用的字符串处理函数,strcpy、strcat、strcmp、strstr、memchr、memcmp、memcpy、memmove、memset的原型、作用、参数、返回值和相关例子。

idzgz的博客 850

字符串比较函数strcmp和strncmp以及memcmp详解与对比分析

字符串比较的本质是按 ASCII 码值逐字符对比,而非比较字符串长度。C 语言中字符串以’\0’作为结束标志,这一特性直接决定了strcmp()与strncmp()的设计逻辑差异:简单来说:strcmp()是 “全自动” 比较(直到结束符),strncmp()是 “半自动” 比较(指定最大长度)。两者的返回值逻辑一致 —— 均通过字符 ASCII 差值判断大小,但适用场景和安全性差异显著。

宁静致远的博客 1623
上一篇: malloc与new
下一篇: error C4430: 缺少类型说明符 - 假定为 int
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值