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

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

memchr() fonksiyonu

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