龙空技术网

《鹏哥C语言第一课》112.1讲 memcmp函数介绍和代码演示(2)

鹏哥C语言 59

前言:

目前朋友们对“c语言memcmp函数”可能比较注重,我们都想要知道一些“c语言memcmp函数”的相关资讯。那么小编在网摘上搜集了一些关于“c语言memcmp函数””的相关资讯,希望朋友们能喜欢,咱们快快来了解一下吧!

这个视频接着上一个视频给大家介绍一下memcmp函数到底怎么用。直接进入代码演示环节。

memcmp是用来比较两个内存块的数据的,能不能比较两个字符串?当然可以,这个是要指定它的长度的。比如这地方给上一个arrl数组,它里面想放一个字符串,比如叫abedef,可以吧?然后再给个arr2这个数组,它里面想放的什么?想放个abbedef,可以吧?这都行。

这个时候给了两个字符串,现在想让它们比较,memcmp比较。memcmp三个参数,第一个参数就是要比较哪一块空间,第二个参数是要比较的内容空间是什么,对不对?要把这比较空间的起始地址告诉我。

假设想从a开始和a开始向后比较五个字符,这个时候给个arr1,art2,art2,知道数组名表示什么?首元素地址,这个地方arr1表示它的地址,arr2表示它的地址。向后假如比较五个字符,这是不是写个5就可以了?

这个时候这个函数具有返回值,如果比较它的大小,返回的就是整型,刚刚说了返回的可能是大于0,小于0和0这样的值,返回的是整型值,就把整型接收一下,这个地方可以测试去打印,然后%d n,大家注意,把ret的值打印出来,看一眼就清楚了,对不对?

问的时候memcmp函数需要一个头文件,这个头文件假如叫abedef,不是叫string.h,把它一包含。

同学们,现在看一下,可以看到要比较五个字符,a和a相等,b和b又相等,紧接着c和b不相等了,在五个字符之内已经比较出大小了。c所在的字符的ASCLL码值是比b的ASCLL码值要大的,这个时候字符串当然就比这个字符串大了,至少前五个字符串就比这个大了,因为已经比较出它们的大小了。

这个时候arrl比arr2大,返回一个大于0的数字来测试一下,Ctrl+f一走,返回一个e。有同学说老师,这个地方也改成abcdef,前五个字符和我是不是一模一样?这个时候函数返回值就是什么?0,大家看一下,相等。

当然有同学说老师,如果这个地方比如第五个字符,就这个地方写着q,abed和abed前四个字符都一样,当比较第五个字符的时候e小于q,这个时候q是不是大一些?ASCLL码大,第一个小于第二个,返回应该是个小于0的注值对不对?

代码这么一走,大家看一下,-1满足不满足前面讲的返回值的形式?满足,这样是把返回值是不是打印出来?也可以直接去判断iret如果等于0,等于0的时候它俩是不是相等?这个时候就可以说%s等于%s,可以在这地方把它们的内容打印出来,这个地方是相等。

大家注意,也可以说iret,注意如果是大于0的,这个地方就可以说是arrl指向内容,大于arr2指向内容,剩一种就是小于0了,小于0也可以在这地方打一个小于0。

当然这个地方要知道表达的意思其实是这里面的前五个字符,因为这写的是5,只表示比较的是这两个字符串的前五个字符的大小,明白了吧?希望大家注意。

当然这个地方随着对于数据的调整,这个函数的也可以比较,比如整型数组也可以去比,反正比较的是前五个字节,即使整型数组或其他什么数组,也是从要开始的位置向后最多比较五个字符,五个字符之内提前就比较出它们的大小关系,就提前就结束了。

如果必须要比较的第五个,就比较第五个,听懂意思了吗?希望大家能够注意,这是给大家讲的这么一个点,希望大家能够注意。

当然这个地方虽然给的是arrl、arr2,也可以把起始地址调整一下,比如希望从c的位置开始比,各自从c的位置开始比,这应该就是arr1+2,这儿也应该是arr2+2,为什么?因为数组名表示首元素地址,跳过两个字符,这个地方向后比较。

当然这个时候5就可能就不太现实了,因为后面就没那么多个字符了,所以大家在写的时候要给出适当的长度,当然如果从c开始比,最多也就能比较四个字符串,懂了吧?大家能够听懂我的意思吗?希望大家能够注意。

这个地方给大家简单的说一下函数的情况,当然大家注意,在课件里面这个地方给的例子也是给了两个字符串,这个比较的是整个字符串,长度的给的是sizeof buffer1,sizeof buffer1的意思。大家注意算的这个数组,数组名给进去算的整个数组的长度,包含这个里边儿放的那个\0,把这两个数组整体全部都比较完了。

这是这个例子,跟刚刚表达的其实是非常非常相似的,只不过这个地方是从数组里面只比较一小部分,不是说完全比较,这个长度的根据实际情况来定就可以了。

总结一下,如果要比较两块内存单元里面的数据的大小,就可以使用memcmp这个函数。这个函数的特点就是可以指定比较长度,一定要注意可以指定比较长度,不是说全都要比,要比较多长就比较多长。而且memcmp这个函数其实通过返回值来告知它们的大小关系的。

这就是memcmp函数,希望大家听到这的时候有所收获。如果大家觉得这个视频讲的有价值,一定要记得给鹏哥点个赞,这个视频会一直的给大家更新下去。同学们如果大家觉得讲的还不错,也要关注一下鹏哥,后期不断的给大家更新。这个视频讲到这里,下个视频再见。

标签: #c语言memcmp函数