converts a wide character to a multibyte character
char * restrict s
mbstate_t * restrict
() converts the wide character given
to the corresponding multibyte
character, and stores up to
bytes in the array pointed to by s
is not a null pointer.
The behaviour of
() is affected by the
category of the current locale.
These are the special cases:
- wc == 0
- For state-dependent encodings,
wcrtomb() stores a null byte preceded
by a special byte sequence (if any) to return to an initial state to the
array pointed by s, and the state object
pointed by ps also returned to an initial
- s == NULL
wcrtomb() just places
ps into an initial state. It is
equivalent to the following call:
Here, buf is a dummy buffer. In this case,
wc is ignored.
- ps == NULL
mbrtowc() uses its own internal state
object to keep the conversion state, instead of
ps mentioned in this manual page.
Calling any other functions in libc never
change the internal state of
which is initialized at startup time of the program.
() returns the number of bytes
(including any shift sequences) which are stored in the array pointed to by
. If wc
not a valid wide character,
returns (size_t)-1 and sets errno
() may cause an error in the following
- wc is not a valid wide character.
- ps points to an invalid or uninitialized
() function conforms to ISO/IEC
9899/AMD1:1995 (“ISO C90, Amendment 1”). The restrict qualifier
is added at ISO/IEC 9899/1999 (“ISO C99”).