converts a wide character to a multibyte character
char * restrict s
mbstate_t * restrict
() converts the wide character given by
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 wcrtomb
() 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 mbrtowc(), 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, wcrtomb
(size_t)-1 and sets errno
to indicate error.
() may cause an error in the following
- wc is not a valid wide
- ps points to an invalid or
uninitialized mbstate_t object.
() function conforms to ISO/IEC
9899/AMD1:1995 (“ISO C90, Amendment 1”). The restrict qualifier
is added at ISO/IEC 9899/1999 (“ISO C99”).