| WCSRTOMBS(3) | Library Functions Manual | WCSRTOMBS(3) |
wcsrtombs,
wcsnrtombs — converts a
wide-character string to a multibyte character string
(restartable)
Standard C Library (libc, -lc)
#include
<wchar.h>
size_t
wcsrtombs(char * restrict s,
const wchar_t ** restrict pwcs, size_t
n, mbstate_t * restrict ps);
size_t
wcsnrtombs(char * restrict s,
const wchar_t ** restrict pwcs, size_t
nwc, size_t n, mbstate_t *
restrict ps);
The
wcsrtombs()
function converts the NUL-terminated wide-character string indirectly
pointed to by pwcs to the corresponding multibyte
character string, and stores it in the array pointed to by
s. The conversion stops due to the following
reasons:
wcsrtombs() has already stored
n bytes in the array pointed to by
s.Each character will be converted as if wcrtomb(3) is continuously called, except the internal state of wcrtomb(3) will not be affected.
After conversion, if s is not a NULL pointer, the pointer object pointed to by pwcs is a NULL pointer (if the conversion is stopped due to reaching a NUL wide character) or points to the first byte of the character just after the last character converted.
If s is not a NULL pointer
and the conversion is stopped due to reaching a NUL wide character,
wcsrtombs()
places the state object pointed to by ps to an initial
state after the conversion is taken place.
The behavior of
wcsrtombs()
is affected by the LC_CTYPE category of the current
locale.
These are the special cases:
s ==
NULLwcsrtombs()
returns the number of bytes to store the whole multibyte character string
corresponding to the wide-character string pointed to by
pwcs, not including the terminating NUL byte. In
this case, n is ignored.pwcs == NULL
|| *pwcs == NULLps ==
NULLwcsrtombs() uses its own internal state object to
keep the conversion state, instead of ps mentioned
in this manual page.
Calling any other functions in
Standard C Library (libc, -lc) never
changes the internal state of
wcsrtombs(),
which is initialized at startup time of the program.
The
wcsnrtombs()
function behaves identically to wcsrtombs(), except
that the conversion stops after reading at most nwc
characters from the buffer pointed to by pwcs.
The wcsrtombs() and
wcsnrtombs() functions return:
0,
or positive(size_t)-1wcsrtombs() also sets
errno to indicate the error.The wcsrtombs() and
wcsnrtombs() functions may fail with the following
errors:
The wcsrtombs() function conforms to
ANSI X3.159-1989 (“ANSI C89”).
The restrict qualifier was added by
ISO/IEC 9899:1999
(“ISO C99”).
The wcsnrtombs() function conforms to
IEEE Std 1003.1-2008 (“POSIX.1”).
| October 13, 2024 | NetBSD 11.0 |