memcmp函数在 C 语言中用于按字节比较两个内存区域的内容,返回值用于表示他们的关系。

memcmp 函数头文件

memcmp函数的头文件是<string.h>。在使用memcmp函数之前,确保在你的 C 代码中包含这个头文件:

#include <string.h>

memcmp 函数原型

int memcmp(const void *s1, const void *s2, size_t n);

memcmp函数将s1指向的对象的前n个字符与s2指向的对象的前n个字符进行比较;

比较顺序是逐字节从最低地址到最高地址;

参数说明

  • s1:指向第一个内存块的指针;

  • s2:指向第二个内存块的指针;

  • n:要比较的字节数;

返回值

memcmp函数返回大于、等于或小于0的整数;

返回0时,表示两个内存块的前n个字节完全相等;

返回值的正负是基于字节值的差异计算的:

memcmp = (unsigned char)s1[i] - (unsigned char)s2[i];

memcmp 示例代码

比较数组是否相等

比较数组或结构体时,应覆盖整个对象区域;

#include <stdio.h>
#include <string.h>

int main() {
    
    int array1[] = { 1, 2, 3, 4, 5};
    int array2[] = { 1, 2, 3, 4, 5};

    if (memcmp(array1,array2,sizeof(int) * 5) == 0) {
        printf("Completely identical.\n");
    }else{
        printf("Differences exist.");
    }

    return 0;
}