Name
wctomb
Synopsis
Converts a wide character to a multibyte character, or determines whether the multibyte encoding is stateful
#include <stdlib.h> intwctomb( char *s, wchar_twc);
The wctomb() function
determines the multibyte representation that corresponds to the wide
character wc, and stores it, including
any necessary shift sequences, in the char array addressed by the pointer
argument s. The size of this array is
assumed to be at least MB_CUR_MAX
to accommodate the multibyte character representation. If
wc is a null wide character (L'\0'), wctomb() stores a null character, preceded
by any necessary shift sequences to restore the initial shift state,
in the char array addressed by
s. The function returns the number of
bytes in the multibyte sequence written, or -1 if the value of
wc does not correspond to any valid
multibyte character.
If you pass wctomb() a null
pointer as the first argument, then the return value indicates
whether the current multibyte encoding is stateful. This behavior is
the same as that of mblen(). If
wctomb() returns 0, then the
encoding is stateless. If it returns any other value, the encoding
is stateful; that is, the interpretation of a given byte sequence
may depend on the shift state.
Example
char mbbuffer[MB_LEN_MAX] = { '\0' };
wchar_t wcs[ ] = L"Wir stehen auf den Füßen von Riesen";
int n = 0, i = 0;
printf( "The current locale is %s.\n", setlocale( LC_CTYPE, "" ));
printf( "The locale's multibyte encoding is %s.\n",
(wctomb( NULL, L'\0' ) ? "stateful" ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access