memmove, wmemmove
Один буфер перемещается в другой.Более безопасные версии этих функций доступны; см. 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) src В dest*.* Если некоторые области исходной и целевой области перекрывают друг друга, то обе функции гарантируют, что байты исходного источника в области перекрывающихся копируются перед перезаписи.
примечание по безопасности Убедитесь, что буфер назначения имеют одинаковый размер или больше, чем буфер источника.Дополнительные сведения см. в разделе Исключение переполнения буфера.
memmove и wmemmove функции будут нерекомендуемый, только если константа _CRT_SECURE_DEPRECATE_MEMORY определяет до включения для выписки функций нерекомендуемый, как показано в примере ниже:
#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 );
}
Эквивалент в .NET Framework
См. также
Ссылки
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l