函数
<cstring>

memcmp

int memcmp ( const void * ptr1, const void * ptr2, size_t num );
比较两块内存
比较 ptr1 指向的内存块的前 num 个字节与 ptr2 指向的前 num 个字节。如果它们全部匹配,则返回零;如果不匹配,则返回一个非零值,表示哪个值更大。

请注意,与 strcmp 不同,该函数在找到空字符后不会停止比较。

参数

ptr1
指向内存块的指针。
ptr2
指向内存块的指针。
num
要比较的字节数。

返回值

返回一个整数值,表示内存块内容之间的关系
返回值表示
<0两个内存块中第一个不匹配的字节在 ptr1 中的值小于在 ptr2 中的值(如果作为 unsigned char 值进行评估)
0两个内存块的内容相等
>0两个内存块中第一个不匹配的字节在 ptr1 中的值大于在 ptr2 中的值(如果作为 unsigned char 值进行评估)

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* memcmp example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char buffer1[] = "DWgaOtP12df0";
  char buffer2[] = "DWGAOTP12DF0";

  int n;

  n=memcmp ( buffer1, buffer2, sizeof(buffer1) );

  if (n>0) printf ("'%s' is greater than '%s'.\n",buffer1,buffer2);
  else if (n<0) printf ("'%s' is less than '%s'.\n",buffer1,buffer2);
  else printf ("'%s' is the same as '%s'.\n",buffer1,buffer2);

  return 0;
}

输出

'DWgaOtP12df0' is greater than 'DWGAOTP12DF0'.


DWgAOtp12Df0大于DWGAOTP12DF0因为两个单词中第一个不匹配的字符分别是'g''G''g'(103)的评估值大于'G' (71).

另见