memcmp内存比较函数

1.头文件:string.h

**2.函数原型:**int memcmp(const void *ptr1, const void *ptr2, size_t num)

**3.函数功能:**比较两块内存中数据的大小

4.参数解释:

比较 ptr1 和 ptr2 两个指针所指向的两块内存中的前 num 个字节

5.返回值:

逐字节比较

当ptr1指针指向的内存中的数据 小于 ptr2指针指向的内存中的数据 ,返回 -1

当ptr1指针指向的内存中的数据 等于 ptr2指针指向的内存中的数据 ,返回 0

当ptr1指针指向的内存中的数据 大于 ptr2指针指向的内存中的数据 ,返回 1

6.实例代码:

++memcmp函数逐字节比较时,只根据第一次不相同的字节来返回结果值++

例如在比较nums3和nums4中的数据时,虽然nums3中后三个数据全部比nums4中后三个数据大,但是nums3的第二个数据小于nums4的第二个数据,因此返回-1

cpp 复制代码
int nums1[] = { 1,2,3,4,5,6,7,8,9 };
int nums2[] = { 1,2,3,4,9 };
printf("%d\n", memcmp(nums1, nums2, sizeof(int) * 4));//0,比较前4个数据
printf("%d\n", memcmp(nums1, nums2, sizeof(int) * 5));//-1,比较前5个数据
cpp 复制代码
 int nums3[] = { 1,0,3,3,3 };
 int nums4[] = { 1,2,0,0,0 };
 printf("%d\n", memcmp(nums3, nums4, sizeof(int) * 5));//-1,比较前5个数据

可以不比较完整的一个数据,那么就要看数据的存储是大端存储还是小端存储

我的机器存储是小端存储,那么nums1中的数据存储:01 00 00 00 02 00 00 00 ++04++ 00 00 00

nums2中的数据存储:01 00 00 00 02 00 00 00 ++03++ 00 00 00

只比较前9个字节,就是比较到加粗字节处(04 和 03),因此返回结果为1

cpp 复制代码
int nums5[] = { 1,2,4 };
int nums6[] = { 1,2,3 };
printf("%d\n", memcmp(nums5, nums6, 9));//1,比较前9个字节

memcmp函数可以比较任意数据类型(比较结构体等数据不太好观察,此处不做代码演示)

cpp 复制代码
char arr1[] = "abcdeg";
char arr2[] = "abcdef";
printf("%d\n", memcmp(arr1, arr2, 6));//1,比较前6个字节
相关推荐
凌肖战11 分钟前
力扣上刷题之C语言实现(数组)
c语言·算法·leetcode
Jhxbdks1 小时前
C语言中的一些小知识(二)
c语言·开发语言·笔记
代码雕刻家1 小时前
数据结构-3.1.栈的基本概念
c语言·开发语言·数据结构
AlexMercer10121 小时前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法
Reese_Cool2 小时前
【C语言二级考试】循环结构设计
android·java·c语言·开发语言
zxctsclrjjjcph2 小时前
【C语言】常见的C语言概念
c语言·开发语言
m0_714590262 小时前
汇编(实现C语言程序的调用)
c语言·开发语言·汇编
重生之我在20年代敲代码5 小时前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
2401_858286118 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
jiao0000110 小时前
数据结构——队列
c语言·数据结构·算法