Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
C Programlama

BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <string.h> > memcmp

memcmp() fonksiyonu

Bildirim

int memcmp(const void *ptr1, const void *ptr2, size_t n);

Açıklama

Ptr1 parametresi ile gösterilen bellek bölgesinin n parametre değeri kadar ilk byte'ını ptr2 parametresi ile gösterilen bellek bölgesi ile karşılaştırır. Eğer her iki bellek bölgesindeki tüm değerler aynı ise sıfır değeri, aksi takdirde sıfırdan farklı bir değer geri döndürür.

Parametreler

ptr1: Karşılaştırma yapılacak ilk bellek bölgesinin başlangıcını gösteren bir işaretçidir.

ptr2: Karşılaştırma yapılacak ikinci bellek bölgesinin başlangıcını gösteren bir işaretçidir.

n: Karşılaştırma yapılacak byte sayısını gösterir.

Dönüş değeri

Dönüş değeri;

  • <0 ise ptr1 bellek içeriği ptr2 bellek içeriğinden küçüktür.
  • >0 ise ptr2 bellek içeriği ptr1 bellek içeriğinden küçüktür.
  • =0 ise ptr1 bellek içeriği ptr2 bellek içeriğine eşittir.

Örnek


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

int main(void)
{
    const char *cp1 = "Bilgisayar";
    const char *cp2 = "Bilgileri";
    int ret;

    ret = memcmp(cp1, cp2, 10);

    if(ret<0) printf("cp1 bellek içeriği cp2 bellek içeriğinden küçüktür!");
    else if(ret>0) printf("cp2 bellek içeriği cp1 bellek içeriğinden küçüktür!");
    else printf("cp1 bellek içeriği cp2 bellek içeriğine eşittir!");

    return 0;
}

Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar.

cp2 bellek içeriği cp1 bellek içeriğinden küçüktür!

Program memcmp() fonksiyonu ile iki bellek bloğunu karşılaştırarak elde ettiği sonucu ekrana yazar.

Kaynak kodu

Copyright Public domain


int memcmp(const void *ptr1, const void *ptr2, size_t n)
{
  const unsigned char *p1 = ptr1, *p2 = ptr2;
  
  while(n--) {
    if(*p1 != *p2)
       return *p1 - *p2;
    else {
       p1++;
       p2++;
	}   
  }
  
  return 0;
}