c语言中的memcmp函数
时间: 2023-12-18 20:04:11 浏览: 119
`memcmp` 函数是 C 语言中用于比较两个内存块内容的函数。它的声明如下:
```c
int memcmp(const void *ptr1, const void *ptr2, size_t num);
```
该函数接受三个参数:
- `ptr1`:指向要比较的第一个内存块的指针。
- `ptr2`:指向要比较的第二个内存块的指针。
- `num`:要比较的字节数。
`memcmp` 函数按字节比较两个内存块的内容,返回值有以下几种情况:
- 返回值为 0:表示两个内存块相等。
- 返回值小于 0:表示第一个不相等的字节在 `ptr1` 的位置比在 `ptr2` 的位置小。
- 返回值大于 0:表示第一个不相等的字节在 `ptr1` 的位置比在 `ptr2` 的位置大。
这个函数通常用于实现比较字符串或数据结构等需要按字节进行比较的场景。
相关问题
C语言改写memcmp
C语言中的`memcmp()`函数用于比较两个内存区域的内容是否相等,它通常接受三个参数:需要比较的两个指针以及它们之间的字节数。如果你想在C语言中自定义一个类似的函数,你可以按照下面的方式编写:
```c
#include <stdbool.h>
bool custom_memcmp(const void* ptr1, const void* ptr2, size_t len) {
if (len == 0) {
return true; // 如果长度为0,视为内容完全匹配
}
const unsigned char* p1 = (const unsigned char*)ptr1;
const unsigned char* p2 = (const unsigned char*)ptr2;
while (len--) {
if (*p1 != *p2) {
return false; // 找到第一个不匹配的字节则返回false
}
p1++;
p2++;
}
return true; // 没有找到不匹配,表示内容完全一样
}
memcmp函数使用
``函数是C语言中用于比较两个内存区域的函数。
函数原型如下:
```c
int memcmp(const void *s1, const void *s2, size_t n);
```
其中,`s1`和`s2`分别是待比较内存区域的起始地址,`n`是待比较的字节数。
函数返回值为:
- 如果`s1`所指内存区域的所有字节都等于`s2`所指内存区域的所有字节,则返回0;
- 如果在前n个字节中出现第一个不相等的字节时,s1所指内存地址中的值大于s2所指内存地址中的值,则返回一个大于0的值;
- 如果在前n个字节中出现第一个不相等的字节时,s1所指内存地址中的值小于s2所指内存地址中的值,则返回一个小于0的值。
下面是一个使用`memcmp`函数比较两个字符串的例子:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "hello";
char str2[] = "world";
int result = memcmp(str1, str2, 3);
if(result == 0)
{
printf("前三个字符相同\n");
}
else if(result > 0)
{
printf("str1的前三个字符大于str2的前三个字符\n");
}
else
{
printf("str1的前三个字符小于str2的前三个字符\n");
}
return 0;
}
```
输出结果为:
```
前三个字符相同
```
阅读全文