C 庫 - memcmp() 函式



C 庫的 memcmp() 函式可以用來比較兩個記憶體塊。通常,它用於比較二進位制資料或原始資料。

這裡,memcmp() 接受三個變數作為引數,比較記憶體區域 str1 和記憶體區域 str2 的前 n 個位元組。

語法

以下是 C 庫 memcmp() 函式的語法:

int memcmp(const void *str1, const void *str2, size_t n)

引數

此函式接受以下引數:

  • str1 - 指向記憶體塊的指標。

  • str2 - 此引數定義指向記憶體塊的指標。

  • n - 此引數定義要比較的位元組數。

返回值

此函式在三種不同的情況下返回整數值:

  • 如果返回值 < 0,則表示 str1 小於 str2。

  • 如果返回值 > 0,則表示 str2 小於 str1。

  • 如果返回值 == 0,則表示 str1 等於 str2。

示例 1

以下 C 庫程式說明了 memcmp() 函式的使用方法。

#include <stdio.h>
#include <string.h>

int main () 
{
   char str1[15];
   char str2[15];
   int ret;

   memcpy(str1, "abcdef", 6);
   memcpy(str2, "ABCDEF", 6);

   ret = memcmp(str1, str2, 5);

   if(ret > 0) {
      printf("str2 is less than str1");
   } 
   else if(ret < 0) {
      printf("str1 is less than str2");
   } 
   else {
      printf("str1 is equal to str2");
   }
   return(0);
}

輸出

以上程式碼產生以下結果:

str2 is less than str1

示例 2

在下面的程式中,我們使用兩個整型陣列來檢查它們是否相等或不相等。

#include <stdio.h>
#include <string.h>

int main() {
   int arr1[] = {1, 2, 3, 4, 5};
   int arr2[] = {1, 2, 3, 4, 6};

   int result = memcmp(arr1, arr2, sizeof(arr1));

   if (result == 0) {
       printf("Arrays are equal\n");
   } else {
       printf("Arrays are not equal\n");
   }
    return 0;
}

輸出

執行上述程式碼後,我們得到以下結果:

Arrays are not equal

示例 3

這裡,我們建立整數值作為字串,並應用 if-else-if 語句來檢查字串是大於、小於還是等於。

#include <stdio.h>
#include <string.h>

int main() {
   char str1[] = "12345678901400345678";
   char str2[] = "1234567";

   int result = memcmp(str1, str2, 10);

   if (result < 0) {
       printf("First is less than second.\n");
   } else if (result == 0) {
       printf("First is equal to second.\n");
   } else {
       printf("First is greater than second.\n");
   }
    return 0;
}

輸出

執行程式碼後,我們得到以下結果:

First is greater than second.
廣告