РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
184 of 815 menu

Функция memmove

Функция memmove копирует указанное количество байт из одного участка памяти в другой. Главное отличие от функции memcpy заключается в том, что memmove корректно работает с перекрывающимися областями памяти: если источник и назначение пересекаются, функция сначала копирует данные во временный буфер, а затем переносит их в место назначения. В первый параметр мы передаем указатель на место назначения, во второй - указатель на источник данных, а в третий - количество байт для копирования.

Синтаксис

void* memmove(void* dest, const void* src, size_t count);

Пример

Давайте скопируем 3 байта из одной строки в другую:

#include <iostream> #include <cstring> using namespace std; int main() { char src[] = "abcde"; char dest[10] = ""; memmove(dest, src, 3); dest[3] = '\0'; cout << dest << endl; return 0; }

Результат выполнения кода:

"abc"

Пример

Давайте скопируем участок строки поверх самой себя, сдвинув символы вправо. Функция memmove корректно обработает перекрытие:

#include <iostream> #include <cstring> using namespace std; int main() { char str[] = "12345"; memmove(str + 1, str, 4); cout << str << endl; return 0; }

Результат выполнения кода:

11234

Смотрите также

  • функция memcpy,
    которая копирует память без учета перекрытия
  • функция memset,
    которая заполняет участок памяти одним значением
  • функция memcmp,
    которая сравнивает два участка памяти
  • функция strcpy,
    которая копирует одну строку в другую
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить