HP-UX Reference (11i v2 04/09) - 3 Library Functions A-M (vol 6)

m
mbrtowc(3C) mbrtowc(3C)
NAME
mbrtowc( ) - convert a character to a wide-character code (restartable)
SYNOPSIS
#include <wchar.h>
size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
DESCRIPTION
If s is a null pointer, the mbrtowc()
function is equivalent to the call:
mbrtowc(NULL, "", 1, ps)
In this case, the values of the arguments pwc and n are ignored.
If s is not a null pointer, the
mbrtowc() function inspects at most n bytes beginning at the byte pointed
to by s to determine the number of bytes needed to complete the next character (including any shift
sequences). If the function determines that the next character is completed, it determines the value of
the corresponding wide-character and then, if pwc is not a null pointer, stores that value in the object
pointed to by pwc. If the corresponding wide-character is the null wide-character, the resulting state
described is the initial conversion state.
If ps is a null pointer, the
mbrtowc() function uses its own internal mbstate_t object, which is initial-
ized at program startup to the initial conversion state. Otherwise, the mbstate_t object pointed to by ps is
used to completely describe the current conversion state of the associated character sequence.
EXTERNAL INFLUENCES
locale
The behavior of this function is affected by the
LC_CTYPE category of the current locale.
RETURN VALUE
The
mbrtowc() function returns the first of the following that applies:
0 If the next n or fewer bytes complete the character that corresponds to the null
wide-character (which is the value stored).
Positive If the next n or fewer bytes complete a valid character (which is the value stored);
the value returned is the number of bytes that complete the character.
(size_t)-2 If the next n bytes contribute to an incomplete but potentially valid character, and
all n bytes have been processed (no value is stored). When n has at least the value
of the
MB_CUR_MAX macro, this case can only occur if s points at a sequence of
redundant shift sequences (for implementations with state-dependent encodings).
(size_t)-1 If an encoding error occurs, in which case the next n or fewer bytes do not contri-
bute to a complete and valid character (no value is stored). In this case,
EILSEQ is
stored in errno and the conversion state is undefined.
ERRORS
The
mbrtowc() function may fail if:
[EINVAL] ps points to an object that contains an invalid conversion state.
[EILSEQ] Invalid character sequence is detected.
WARNINGS
With the exception of
ASCII characters, the code values of wide characters (type of wchar_t) are specific
to the effective locale specified by the LC_CTYPE environment variable. These values may not be compa-
tible with values obtained by specifying other locales that are supported now, or which may be supported
in the future. It is recommended that wide character constants and wide string literals (see the C Refer-
ence Manual) not be used, and that wide character code values not be stored in files or devices because
future standards may dictate changes in the code value assignments of the wide characters. However,
wide character constants and wide string literals corresponding to the characters of the ASCII code set can
be safely used since their values are guaranteed to be the same as their ASCII code set values.
AUTHOR
mbrtowc() was developed by HP and Mitsubishi Electric Corporation.
Section 3618 Hewlett-Packard Company 1 HP-UX 11i Version 2: September 2004