memmove, wmemmove

Перемещает один буфер в другой. Доступны более безопасные версии этих функций; see memmove_s, wmemmove_s.

Синтаксис

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

Параметры

dest
Конечный объект.

src
Исходный объект.

count
Число копируемых байтов (memmove) или символов (wmemmove).

Возвращаемое значение

Значение dest.

Замечания

Копирует count байты (memmove) или символы (wmemmove) из srcdest. Если некоторые части исходного и целевого регионов перекрываются, обе функции гарантируют, что исходные исходные байты в перекрывающейся области копируются перед перезаписью.

Обратите внимание на безопасность . Убедитесь, что целевой буфер достаточно велик, чтобы вместить количество перемещаемых символов. Дополнительные сведения см. в разделе "Избегание переполнения буфера".

wmemmove Функции memmove устарели только в том случае, если константа _CRT_SECURE_DEPRECATE_MEMORY определена перед #include инструкцией, как показано в следующем примере:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <string.h>

or

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Требования

Маршрут Обязательный заголовок
memmove <string.h>
wmemmove <wchar.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// crt_memcpy.c
// Illustrate overlapping copy: memmove
// always handles it correctly; memcpy may handle
// it correctly.
//

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

char str1[7] = "aabbcc";

int main( void )
{
   printf( "The string: %s\n", str1 );
   memcpy( str1 + 2, str1, 4 );
   printf( "New string: %s\n", str1 );

   strcpy_s( str1, sizeof(str1), "aabbcc" );   // reset string

   printf( "The string: %s\n", str1 );
   memmove( str1 + 2, str1, 4 );
   printf( "New string: %s\n", str1 );
}
The string: aabbcc
New string: aaaabb
The string: aabbcc
New string: aaaabb

См. также

Манипуляция буфером
_memccpy
memcpy, wmemcpy
strcpy, , wcscpy_mbscpy
strncpy, , _strncpy_l_wcsncpy_lwcsncpy_mbsncpy,_mbsncpy_l