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