wcscpy, wcscpy_s
From cppreference.net
|
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_ssolo 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
Ejecutar este código
#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
|
(C95)
(C11)
|
copia una cantidad determinada de caracteres anchos de una cadena a otra
(función) |
|
(C95)
(C11)
|
copia una cantidad determinada de caracteres anchos entre dos arreglos no superpuestos
(función) |
|
(C11)
|
copia una cadena a otra
(función) |
|
Documentación de C++
para
wcscpy
|
|