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

memccpy() fonksiyonu

Bildirim

void *memccpy(void *dest, const void *src, int c, size_t n);

Açıklama

Src parametresi ile gösterilen bellek bölgesinde yer alan karakterleri, c parametresindeki karakterin ilk yer aldığı yere kadar, bu karakterde dahil olmak üzere, veya baştan itibaren n parametre değeri kadar uzunlukta olmak üzere, bu koşullardan hangisi önce gerçekleşirse, dest parametresindeki bellek bölgesine kopyalar.

Parametreler

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

src: Dest parametresine kopyalanacak karakterlerin bellek başlangıcını gösteren bir işaretçidir.

c: Kopyalama işleminin sona ereceği karakterdir.

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

Dönüş değeri

Başarı durumunda, dest parametresindeki dizide bulunan c parametresindeki karakterden sonraki karakterin adresini gösteren bir işaretçi geri döndürülür. Eğer c parametre değeri src parametresi içindeki ilk n parametre değeri kadar byte içinde bulunamazsa, NULL bir işaretçi değeri döndürülür.

Örnek


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

int main(void)
{
    const char *cp = "Bilgisayar&Programlama";
    char dest[40];

    memset(dest, '\0', 40);
    memcpy(dest, cp, 40);
    printf("%s\n", dest);

    memset(dest, '\0', 40);
    memccpy(dest, cp, '&', 40);
    printf("%s", dest);

    return 0;
}


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

Bilgisayar&Programlama
Bilgisayar&

Program önce bir karakter dizisi içindeki karakterlerin tamamını memcpy() fonksiyonu ile bir karakter dizisine kopyalayarak ekrana yazar. Sonra, aynı karakter dizisindeki karakterlerin & karakterine kadar olanlarını, bu karakter de dahil olmak üzere, bir karakter dizisine kopyalayarak ekrana yazar.

Kaynak kodu

Copyright (c) 1990, 1993 The Regents of the University of California


void* memccpy(void *dest, const void *src, int c, size_t n)
{
  if(n) {
	 unsigned char *tp = dest;
	 const unsigned char *fp = src;
	 unsigned char uc = c;
	
	 do {
		if((*tp++ = *fp++) == uc)
			return (tp);
	 } while(--n != 0);
  }
  
  return (0);
}