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> > memset

memset() fonksiyonu

Bildirim

void* memset(void *dest, int c, size_t n);

errno_t memset_s(void *dest, rsize_t destsz, int c, rsize_t n); (C11)

Açıklama

C parametresi ile gösterilen bellek bölgesindeki karakteri (unsigned char), dest parametresindeki bellek bölgesinin ilk n parametre değeri kadar byte'ına kopyalar.

Eğer dest parametresi NULL bir işaretçi ise, belirsiz sonuçlar elde edilir.

memset_s() fonksiyonunda ayrıca, aşağıdaki hatalar çalışma zamanında algılanır ve tüm hedef aralığına [dest, dest+destsz) c parametre değeri yüklendikten sonra (dest ve destsz parametre değerleri geçerliyse) yüklenmiş olan kısıtlayıcı işlem fonksiyonu çağrılır:

  • Dest parametre değeri NULL bir işaretçi ise,
  • Destsz veya n parametre değeri RSIZE_MAX değerinden büyük ise,
  • N parametre değeri destsz parametre değerinden büyük ise (ara bellek aşımı oluşur).

Parametreler

dest: C parametresindeki karakterin kopyalanacağı belleği gösteren işaretçidir.

c: Dest parametresine kopyalanacak karakterdir.

n: Kopyalanacak maksimum karakter sayısıdır.

destsz: Dest parametresinde değiştirilecek maksimum byte sayısıdır.

Dönüş değeri

Dönüş değeri;

Memmove() fonksiyonu dest parametre değerini geri döndürür.

Memmove_s() fonksiyonu başarı durumunda 0 değerini, hata durumunda sıfır olmayan değer geri döndürür. Hata durumunda ayrıca, dest NULL bir işaretçi değilse ve destsz geçerli bir değerse, dest ile gösterilen bellek bölgesine destsz kadar sıfır değeri yazar.

Örnek


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

int main(void)
{
    char cdizi[] = "Bilgisayar";

    printf("cdizi bellek içeriği: %s\n", cdizi);

    memset(cdizi, 'x', 5);

    printf("cdizi bellek içeriği: %s", cdizi);

    return 0;
}


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

cdizi bellek içeriği: Bilgisayar
cdizi bellek içeriği: xxxxxsayar

Program bir karakter dizisinin içeriğini ekrana yazdıktan sonra memset() fonksiyonu ile ilk 5 karakterinin yerine x karakteri koyar ve dizi içeriğini tekrar ekrana yazar.

Kaynak kodu

Copyright Public domain


void* memset(void *dest, int c, size_t n)
{
  unsigned char *ptr = dest;

  while(n--)
    *ptr++ = (unsigned char)c;

  return dest;
}