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
父主题: 函数定义