memmove, wmemmove

Move um buffer para outro. Versões mais seguras dessas funções estão disponíveis; confira memmove_s, wmemmove_s.

Sintaxe

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

Parâmetros

dest
Objeto de destino.

src
Objeto de origem.

count
O número de bytes (memmove) ou caracteres (wmemmove) a serem copiados.

Valor retornado

O valor de dest.

Comentários

Copia bytes count (memmove) ou caracteres (wmemmove) de src para dest. Se algumas partes das regiões de destino e origem se sobrepõem, ambas as funções garantem que os bytes de origem originais na região sobreposta sejam copiados antes de serem substituídos.

Observação de segurança Certifique-se de que o buffer de destino seja grande o suficiente para acomodar o número de caracteres movidos. Para obter mais informações, confira Como evitar sobrecargas de buffer.

As funções memmove e wmemmove serão preteridas somente se a constante _CRT_SECURE_DEPRECATE_MEMORY for definida antes da instrução #include, conforme mostrado no exemplo a seguir:

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <string.h>

or

#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>

Requisitos

Rotina Cabeçalho necessário
memmove <string.h>
wmemmove <wchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Manipulação de buffer
_memccpy
memcpy, wmemcpy
strcpy, wcscpy, _mbscpy
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l