Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > M


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


mbrtowc() — convert a character to a wide-character code (restartable)


#include <wchar.h>

size_t mbrtowc(wchar_t *__restrict pwc, const char *__restrict s, size_t n, mbstate_t *__restrict ps);


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 initialized 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.


The prototype of this function is available to applications if they are:


c99 conformant.


Compiled with -D_XOPEN_SOURCE macro with a value >=500.


Compiled with -D_POSIX_C_SOURCE macro with a value >= 200112.


Environment Variables

The behavior of this function is affected by the LC_CTYPE category of the current locale.


The mbrtowc() function returns the first of the following that applies:


If the next n or fewer bytes complete the character that corresponds to the null wide-character (which is the value stored).


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.


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).


If an encoding error occurs, in which case the next n or fewer bytes do not contribute to a complete and valid character (no value is stored). In this case, EILSEQ is stored in errno and the conversion state is undefined.


The mbrtowc() function may fail if:


Invalid character sequence is detected.


ps points to an object that contains an invalid conversion state.


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 compatible 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 Reference 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.


mbrtowc() was developed by HP and Mitsubishi Electric Corporation.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.