Bildirim
void *memchr(const void *ptr, int c, size_t n);
Açıklama
Ptr parametresi ile gösterilen bellek bölgesinin n parametre değeri kadar ilk byte'ında c parametresi ile gösterilen değerin (unsigned char olarak değerlendirilir) ilk geçtiği yeri arar ve bu bellek adresini gösteren bir işaretçi geri döndürür.
Eğer ptr parametresi NULL bir işaretçi ise anlamsız bir sonuç elde edilir.
Parametreler
ptr: Aramanın yapılacağı bellek bölgesinin başlangıcını gösteren bir işaretçidir.
c: Aranacak olan değeri gösterir. Değer int olarak verilir ancak fonksiyon bu değeri unsigned char bir değere çevirerek arama işlemi yapar.
n: Ptr parametresi ile gösterilen bellek bölgesinde aranacak byte sayısını gösterir.
Dönüş değeri
Ptr parametre değeri ile gösterilen bellek bloğunda bulunan ilk c parametre değerinin bellek adresi geri döndürülür. Değer bulunmazsa, NULL bir işaretçi geri döndürülür.
Örnek
#include <stdio.h>
#include <string.h>
int main(void)
{
const char *cp = "Bilgisayar";
const char cd = 'g';
printf("%c karakterinin bellek adresi: %p\n", cd, memchr(cp, cd, strlen(cp)));
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar.
g karakterinin bellek adresi: 00403027
Program memchr() fonksiyonu ile bir karakter dizisi içinde 'g' karakterini arar. Karakterin bellek adresini ekrana yazar.
Kaynak kodu
Copyright Public domain
void *memchr(const void *ptr, int c, size_t n)
{
unsigned char *p = (unsigned char*)ptr;
while(n--) {
if(*p != (unsigned char)c)
p++;
else
return p;
}
return 0;
}