Namespaces
Variants

wmemmove, wmemmove_s

From cppreference.net
< c ‎ | string ‎ | wide
Definido en el encabezado <wchar.h>
wchar_t * wmemmove ( wchar_t * dest, const wchar_t * src, size_t count ) ;
(1) (desde C95)
errno_t wmemmove_s ( wchar_t * dest, rsize_t destsz,
const wchar_t * src, rsize_t count ) ;
(2) (desde C11)
1) Copia exactamente count caracteres anchos sucesivos desde el array de caracteres anchos apuntado por src al array de caracteres anchos apuntado por dest . Si count es cero, la función no hace nada. Los arrays pueden superponerse: la copia se realiza como si los caracteres anchos se copiaran a un array temporal de caracteres anchos y luego se copiaran desde el array temporal a dest .
2) Igual que (1) , excepto que los siguientes errores se detectan en tiempo de ejecución y llaman a la función constraint handler actualmente instalada:
  • src o dest es un puntero nulo
  • destsz o count es mayor que RSIZE_MAX / sizeof ( wchar_t )
  • count es mayor que destsz (ocurriría un desbordamiento)
Como con todas las funciones con verificación de límites, wmemcpy_s solo está garantizada que esté disponible si __STDC_LIB_EXT1__ está definido por la implementación y si el usuario define __STDC_WANT_LIB_EXT1__ como la constante entera 1 antes de incluir <wchar.h> .

Contenidos

Parámetros

dest - puntero al array de caracteres anchos al que copiar
src - puntero al array de caracteres anchos desde el que copiar
destsz - número máximo de caracteres anchos a escribir (el tamaño del buffer de destino)
count - número de caracteres anchos a copiar

Valor de retorno

1) Devuelve una copia de dest
2) Retorna cero en caso de éxito, retorna un valor distinto de cero en caso de error. Además, en caso de error, llena completamente dst hasta pero sin incluir dst + dstsz con caracteres anchos nulos, L ' \0 ' (a menos que dest sea nulo o destsz sea mayor que RSIZE_MAX / sizeof ( wchar_t ) )

Notas

Esta función no es sensible a la configuración regional y no presta atención a los valores de los wchar_t que copia: los nulos así como los caracteres inválidos también se copian.

Ejemplo

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
    wchar_t str[] = L"αβγδεζηθικλμνξοπρστυφχψω";
    printf("%ls\n", str);
    wmemmove(str + 4, str + 3, 3); // copy from [δεζ] to [εζη]
    printf("%ls\n", str);
}

Salida:

αβγδεζηθικλμνξοπρστυφχψω
αβγδδεζθικλμνξοπρστυφχψω

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.29.4.2.4 La función wmemmove (p: TBD)
  • K.3.9.2.1.4 La función wmemmove_s (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.29.4.2.4 La función wmemmove (p: TBD)
  • K.3.9.2.1.4 La función wmemmove_s (p: TBD)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.29.4.2.4 La función wmemmove (p: 432)
  • K.3.9.2.1.4 La función wmemmove_s (p: 642)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.24.4.2.4 La función wmemmove (p: 378)

Véase también

mueve un búfer a otro
(función)
copia cierta cantidad de caracteres anchos entre dos arreglos no superpuestos
(función)