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;
Ö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;
}