memcmp和strcmp
时间: 2024-01-04 18:20:34 浏览: 133
A strcmp timing attack example.zip
memcmp函数是一个内存比较函数,用于比较两个内存区域的内容是否相等。它的原型如下:
```c
int memcmp(const void *ptr1, const void *ptr2, size_t num);
```
其中,ptr1和ptr2是要比较的内存区域的指针,num是要比较的字节数。memcmp函数会按字节逐个比较两个内存区域的内容,直到找到不相等的字节或比较完所有字节。如果两个内存区域的内容完全相等,则返回0;如果不相等,则返回一个小于或大于0的整数,表示第一个不相等字节的差值。
相比之下,strcmp函数是一个字符串比较函数,用于比较两个字符串的内容是否相等。它的原型如下:
```c
int strcmp(const char *str1, const char *str2);
```
其中,str1和str2是要比较的字符串。strcmp函数会按字符逐个比较两个字符串的内容,直到找到不相等的字符或比较完所有字符。如果两个字符串的内容完全相等,则返回0;如果不相等,则返回一个小于或大于0的整数,表示第一个不相等字符的差值。
下面是一个演示例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello";
char str2[] = "world";
int result1 = strcmp(str1, str2);
int result2 = memcmp(str1, str2, sizeof(str1));
printf("strcmp result: %d\n", result1);
printf("memcmp result: %d\n", result2);
return 0;
}
```
输出结果为:
```
strcmp result: -15
memcmp result: -15
```
这说明两个函数的结果是一样的,都返回了第一个不相等字符的差值。
阅读全文