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