mbsnrtowcs - convierte una cadena multibyte a una cadena de caracteres anchos
Biblioteca Estándar C (
libc,
-lc)
#include <wchar.h>
size_t mbsnrtowcs(wchar_t dest[restrict .len], const char **restrict src,
size_t nms, size_t len, mbstate_t *restrict ps);
mbsnrtowcs():
Desde glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Antes de glibc 2.10:
_GNU_SOURCE
La función
mbsnrtowcs() es como la función
mbsrtowcs(3), salvo que el número de bytes a convertir,
comenzando en
*src, está limitado a
nms.
Si
dest no es un NULL, la función
mbsnrtowcs() convierte,
como máximo,
nms bytes de la cadena multibyte
*src a una
cadena de caracteres anchos que comienza en
dest. A lo sumo, se
escriben
len caracteres anchos en
dest. El estado de cambios
*ps se actualiza. La conversión se realiza en realidad llamando
repetidamente a
mbrtowc(Idest, *src, n, ps), donde
n es
algún número positivo tal que esta llamada tenga éxito, e
incrementa a continuación
dest en uno y
*src en el
número de bytes consumidos. La conversión se puede detener por
tres motivos:
- •
- Se ha encontrado una secuencia multibyte inválida.
En este caso se deja *src apuntando a la secuencia multibyte
inválida, la función devuelve (size_t) -1 y se
asigna a errno el valor EILSEQ.
- •
- El límite nms fuerza una parada, o se han
almacenado len caracteres anchos distintos de L'\0' en dest.
En cuyo caso, se deja *src apuntando a la siguiente secuencia
multibyte a convertir y la función devuelve el número de
caracteres anchos escritos en dest.
- •
- Se ha convertido completamente la cadena multibyte,
incluyendo el carácter terminador ancho ('\0') (que tiene el efecto
colateral de devolver a *ps al estado inicial). En esta caso, se
asigna a *src un NULL y la función devuelve el número
de caracteres anchos escritos en dest.
According to POSIX.1, if the input buffer ends with an incomplete character, it
is unspecified whether conversion stops at the end of the previous character
(if any), or at the end of the input buffer. The glibc implementation adopts
the former behavior.
Si
dest es NULL, se ignora
len, y la conversión procede
como antes, salvo que los caracteres anchos obtenidos no se escriben en
memoria y que no existe límite de longitud en el destino.
En los dos casos anteriores, si
ps es un puntero NULL, en su lugar se usa
un estado anónimo privado, sólo conocido por la función
mbsnrtowcs().
Los programadores deben garantizar que hay espacio suficiente en
dest
para, al menos,
len caracteres anchos.
The
mbsnrtowcs() function returns the number of wide characters that make
up the converted part of the wide-character string, not including the
terminating null wide character. If an invalid multibyte sequence was
encountered,
(size_t) -1 is returned, and
errno set to
EILSEQ.
Para obtener una explicación de los términos usados en esta
sección, véase
attributes(7).
Interfaz |
Atributo |
Valor |
mbsnrtowcs() |
Seguridad del hilo |
MT-Unsafe race:mbsnrtowcs/!ps |
POSIX.1-2008.
El comportamiento de
mbsnrtowcs() depende de la categoría LC_CTYPE
de la localización actual.
Pasar NULL como valor de
ps no es seguro en un entorno multihilos.
iconv(3),
mbrtowc(3),
mbsinit(3),
mbsrtowcs(3)
La traducción al español de esta página del manual fue
creada por Juan Piernas <
[email protected]> y Marcos Fouces
<
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 o posterior con respecto a las
condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página
del manual, envíe un correo electrónico a
[email protected]