鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

memcmp

函数功能

比较两块内存区域的内容,逐字节进行比较。如果两块内存的内容不同,返回它们的差异;如果相同,则返回0。

函数定义

int memcmp(const void *ptr1, const void *ptr2, size_t num);

参数说明

参数名

描述

取值范围

输入/输出

ptr1

指向第一块内存的指针。

非空指针,指向有效内存,至少有num字节可访问。

输入

ptr2

指向第二块内存的指针。

非空指针,指向有效内存,至少有num字节可访问。

输入

num

要比较的字节数。

非负数,不超过实际内存大小。

输入

返回值

  • 成功:
    • 如果两块内存相同,返回0。
    • 如果ptr1小于ptr2,返回-1。
    • 如果ptr1大于ptr2,返回1。
  • 失败:对标开源Glibc,不返回特殊异常值。

比较是逐字节进行的,直到发现不同字节或比较完num字节。

示例

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

int main() {
    char str1[] = "Hello, World!";
    char str2[] = "Hello, World!";
    char str3[] = "Hello, World";

    int result1 = memcmp(str1, str2, sizeof(str1));
    if (result1 == 0) {
        printf("str1 and str2 are equal\n");
    } else {
        printf("str1 and str2 are not equal\n");
    }

    int result2 = memcmp(str1, str3, sizeof(str1));
    if (result2 != 0) {
        printf("str1 and str3 are not equal\n");
    } else {
        printf("str1 and str3 are equal\n");
    }
    return 0;
}

运行结果:

str1 and str2 are equal
str1 and str3 are not equal