mbrtowc

Converts a multibyte character to its wide-character representation.

Format

#include  <wchar.h>

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

Arguments

pwc
A pointer to the resulting wide-character code.
s
A pointer to a multibyte character.
n
The maximum number of bytes that comprise the multibyte character.
ps
A pointer to the mbstate_t object. If a NULL pointer is specified, the function uses its internal mbstate_t object.

Description

If s is a NULL pointer, mbrtowc is equivalent to the call:
    mbrtowc(NULL, "", 1, ps)

In this case, the values of pwc and n are ignored.

If s is not a NULL pointer, mbrtowc inspects at most n bytes beginning with the byte pointed to by s to determine the number of bytes needed to complete the next multibyte character (including any shift sequences).

If the function determines that the next multibyte 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 mbrtowc is called as a counting function, which means that pwc is a NULL pointer and s is neither a NULL pointer nor a pointer to a null byte, the value of the internal mbstate_t object will remain unchanged.

Return Values
The number of bytes comprising the multibyte character. 
The next n or fewer bytes complete the multibyte character that corresponds to the null wide character (which is the value stored if pwc is not a NULL pointer). The wide-character code corresponding to a null byte is zero.  
-1  Indicates an encoding error. The next n or fewer bytes do not contribute to a complete and valid multibyte character. errno is set to EILSEQ. The conversion state is undefined.  
-2  Indicates an incomplete but potentially valid multibyte character (all n bytes have been processed). 


Previous Page | Next Page | Table of Contents | Index