Функция memcpy() осуществляет копирование заданного количества байт. Области памяти src и dst не должны пересекаться. Для пересекающихся областей используется memmove(). Для копирования заданного количества байт или до первого нахождения заданного символа (включая его) используется memccpy().
#include <string.h>
void *memcpy(void *dst, const void *src, size_t n);
void *ptr = memcpy((void *)dst, (void *)src, 4); // Копируем 4 символа
dst - буфер назначения
src - откуда копировать байты
n - количество байт для копирования
Возвращает указатель на dst
#include <stdio.h> // prinf()
#include <string.h> // memcpy(), strlen(), memset()
int main(){
const char *src = "Hi Victor!"; // Строка для копирования
int str_size = strlen(src); // Размер строки без завершающего символа
const char dst[str_size + 1]; // Строка назначения, выделяем память с учетом завершающего символа
memset((void *)dst, 0, str_size + 1); // Обнуляем массив заполняем символами конца строки)
printf("&dst = %p \n", dst); // "&dst = 000000000061FDB0"
void *ptr = memcpy((void *)dst, (void *)src, 4); // Копируем 4 символа
printf("%s, ptr = %p \n", dst, ptr); // "Hi V, ptr = 000000000061FDB0"
ptr = memcpy((void *)dst, (void *)src, str_size); // Копируем всю строку src
printf("%s, ptr = %p \n", dst, ptr); // "Hi Victor!, ptr = 000000000061FDB0"
}