wcrtomb
wcrtomb
size_t ``wcrtomb``(char *s, wchar_t wc, mbstate_t *ps);
The function determines the number of bytes needed to represent the wide character wc
as a multibyte character, if possible. (Not all values representable as type wchar_t
are necessarily valid wide-character codes.)
If ps
is not a null pointer, the conversion state for the multibyte string is assumed to be *ps
. Otherwise, it is assumed to be &internal
, where internal
is an object of type mbstate_t
internal to the wcrtomb
function. At program startup, internal
is initialized to the initial conversion state. No other library function alters the value stored in internal
.
If s
is not a null pointer and wc
is a valid wide-character code, the function determines x,
the number of bytes needed to represent wc
as a multibyte character, and stores the converted bytes in the array of char beginning at s
. (x
cannot be greater than MB_CUR_MAX
.) If wc
is a null wide character, the function stores any shift sequence needed to restore the initial shift state, followed by a null byte. The resulting conversion state is the initial conversion state.
If s
is a null pointer, the function effectively returns wcrtomb(buf, L'\0', ps)
, where buf
is a buffer internal to the function. (The function thus returns the number of bytes needed to restore the initial conversion state and to terminate the multibyte string pending from a previous call to wcrtomb
or wcsrtombs
for the same string and conversion state.)
The function returns:
(``size_t``)-1
ifwc
is an invalid wide-character code, in which case the function stores the valueEILSEQ
inerrno
and leaves the resulting conversion state undefined.x
, the number of bytes needed to complete the next muitibyte character, in which case the resulting conversion state indicates thatx
bytes have been generated.