函式
<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).

另見