Namespaces
Variants

wcscpy, wcscpy_s

From cppreference.net
< c ‎ | string ‎ | wide
Definido en el encabezado <wchar.h>
(1)
wchar_t * wcscpy ( wchar_t * dest, const wchar_t * src ) ;
(desde C95)
(hasta C99)
wchar_t * wcscpy ( wchar_t * restrict dest, const wchar_t * restrict src ) ;
(desde C99)
errno_t wcscpy_s ( wchar_t * restrict dest, rsize_t destsz,
const wchar_t * restrict src ) ;
(2) (desde C11)
1) Copia la cadena ancha apuntada por src (incluyendo el carácter ancho nulo terminador) al arreglo de caracteres anchos apuntado por dest . El comportamiento es indefinido si el arreglo dest no es lo suficientemente grande. El comportamiento es indefinido si las cadenas se superponen.
2) Igual que (1) , excepto que puede sobrescribir el resto del array de destino con valores no especificados y que los siguientes errores se detectan en tiempo de ejecución y llaman a la función controladora de restricciones actualmente instalada:
  • src o dest es un puntero nulo
  • destsz es cero o mayor que RSIZE_MAX / sizeof ( wchar_t )
  • destsz es menor o igual que wcsnlen_s ( src, destsz ) , en otras palabras, ocurriría truncamiento
  • ocurriría superposición entre las cadenas de origen y destino
Como con todas las funciones con verificación de límites, wcscpy_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 donde copiar
src - puntero a la cadena ancha terminada en nulo desde donde copiar
destsz - número máximo de caracteres a escribir, normalmente el tamaño del buffer de destino

Valor de retorno

1) devuelve una copia de dest
2) retorna cero en caso de éxito, retorna distinto de cero en caso de error. Además, en caso de error, escribe L ' \0 ' en dest [ 0 ] (a menos que dest sea un puntero nulo o destsz sea cero o mayor que RMAX_SIZE / sizeof ( wchar_t ) ).

Ejemplo

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    wchar_t* src = L"犬 means dog";
//  src[0] = L'狗' ; // this would be undefined behavior
    wchar_t dst[wcslen(src) + 1]; // +1 for the null terminator
    wcscpy(dst, src);
    dst[0] = L'狗'; // OK
    setlocale(LC_ALL, "en_US.utf8");
    printf("src = %ls\ndst = %ls\n", src, dst);
}

Salida:

src = 犬 means dog
dst = 狗 means dog

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.29.4.1.2 La función wcscpy (p: TBD)
  • K.3.9.2.1.1 La función wcscpy_s (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.29.4.1.2 La función wcscpy (p: TBD)
  • K.3.9.2.1.1 La función wcscpy_s (p: TBD)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.29.4.1.2 La función wcscpy (p: 430)
  • K.3.9.2.1.1 La función wcscpy_s (p: 639)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.24.4.1.2 La función wcscpy (p: 376)

Véase también

copia una cantidad determinada de caracteres anchos de una cadena a otra
(función)
copia una cantidad determinada de caracteres anchos entre dos arreglos no superpuestos
(función)
copia una cadena a otra
(función)