memcpy() функция языка Си. Копирование области памяти.

Функция 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"
}
2023-03-14



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Статические и динамические массивы в языке Си. Описание и примеры кода.

#include void * malloc(size_t size_in_bytes); // size_in_bytes - Размер памяти требуемый для выделения, в байтах. // Возвращаемое значение - указатель на начало блока непрерывной выделенной памяти. Или ноль в случае неудачи.
memccpy() функция языка Си. Копирование блока памяти с поиском символа.
memcpy() функция языка Си. Копирование области памяти.
memmove() функция языка Си. Перемещение областей памяти.
restrict ключевое слово языка Си.
sizeof оператор в языке Си. Узнать размер переменной.