wcscpy, wcscpy_s
De es.cppreference.net
| Definida en el encabezado <wchar.h>
|
||
wchar_t* wcscpy( wchar_t* dest, const wchar_t* src );
|
(1) | (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 de terminación) al arreglo de caracteres anchos apuntado por dest. El comportamiento no está definido si el arreglo dest no es suficientemente grande. El comportamiento no está definido si las cadenas se superponen.2) Igual que (1), excepto que puede sobrescribir el resto del arreglo destino con valores no especificados y que los siguientes errores se detectan en tiempo de ejecución y llaman a la función manejador de restricciones instalada actualmente:
srcodestes un puntero nulodestszes cero o mayor queRSIZE_MAX / sizeof(wchar_t)destszes menor o igual awcsnlen_s(src, destsz), en otras palabras, ocurriría truncamiento- ocurriría superposición entre las cadenas origen y destino
- Como todas las funciones con verificación de límites,
wcscpy_ssolo se garantiza 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 entera1antes de incluir <wchar.h>.
Parámetros
| dest | - | puntero al arreglo de caracteres anchos al que copiar |
| src | - | puntero a la cadena ancha terminada en nulo desde la que copiar |
| destsz | - | número máximo de caracteres a escribir, típicamente el tamaño del búfer destino |
Valor de retorno
1) devuelve una copia de
dest2) devuelve cero en caso de éxito, devuelve un valor 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.31.4.2.1 La función wcscpy (p: 438)
- K.3.9.3.1.1 La función wcscpy_s (p: 663)
- 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 cierta cantidad de caracteres anchos de una cadena a otra (función) |
(C95)(C11) |
copia una cierta cantidad de caracteres anchos entre dos arreglos que no se superponen (función) |
(C11) |
copia una cadena a otra (función) |
Documentación de C++ para wcscpy
| |