HPUX multibyte[3c]






 multibyte(3C)                                                 multibyte(3C)





 NAME
      mblen(), mbtowc(), mbstowcs(), wctomb(), wcstombs() - multibyte
      characters and strings conversions

 SYNOPSIS
      #include <stdlib.h>

      int mblen(const char *s, size_t n);

      int mbtowc(wchar_t *pwc, const char *s, size_t n);

      int wctomb(char *s, wchar_t wchar);

      size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n);

      size_t wcstombs(char *s, const wchar_t *pwcs, size_t n);

 DESCRIPTION
      A multibyte character is composed of one or more bytes that represent
      a "whole" character in a character encoding.  A wide character (type
      of wchar_t) is composed of a fixed number of bytes whose code value
      can represent any character in a character encoding.

      mblen()     Determine the number of bytes in the multibyte character
                  pointed to by s.  Equivalent to:

                  mbtowc((wchar_t *)0, s, n);

                  If s is a null pointer, mblen returns a nonzero or zero
                  value, depending on whether the multibyte character
                  encodings do or do not have state-dependent encodings,
                  respectively.  Since no character encodings currently
                  supported by HP-UX are state-dependent, zero is always
                  returned in this case.  However, for maximum portability
                  to other systems, application programs should not depend
                  on this.

                  If s is not a null pointer, mblen returns the number of
                  bytes in the multibyte character if the next n or fewer
                  bytes form a valid multibyte character, or return -1 if
                  they do not form a valid multibyte character.  If s points
                  to the null character, mblen returns 0.

      mbtowc()    Determine the number of bytes in the multibyte character
                  pointed to by s, determine the code for the value of type
                  wchar_t corresponding to that multibyte character, then
                  store the code in the object pointed to by pwc.  The value
                  of the code corresponding to the null character is zero.
                  At most n characters are examined, starting at the
                  character pointed to by s.




 Hewlett-Packard Company            - 1 -     HP-UX Release 9.0: August 1992






 multibyte(3C)                                                 multibyte(3C)





                  If s is a null pointer, mbtowc() returns a non-zero or
                  zero value, depending on whether the multibyte character
                  encodings do or do not have state-dependent encodings,
                  respectively.  Since no character encodings currently
                  supported by HP-UX are state-dependent, zero is always
                  returned in this case.  However, for maximum portability
                  to other systems, application programs should not depend
                  on this.

                  If s is not a null pointer, mbtowc() returns the number of
                  bytes in the converted multibyte character if the next n
                  or fewer bytes form a valid multibyte character, or -1 if
                  they do not form a valid multibyte character.  If s points
                  to the null character, mbtowc() returns 0.  The value
                  returned is never greater than n or the value of the
                  MB_CUR_MAX macro.

      wctomb()    Determine the number of bytes needed to represent the
                  multibyte character corresponding to the code whose value
                  is wchar and store the multibyte character representation
                  in the array object pointed to by s.  At most MB_CUR_MAX
                  characters are stored.

                  If s is a null pointer, wctomb() returns a nonzero or zero
                  value, depending on whether the multibyte character
                  encodings do or do not have state-dependent encodings,
                  respectively.  Since no character encodings currently
                  supported by HP-UX are state-dependent, zero is always
                  returned in this case.  However, for maximum portability
                  to other systems, application programs should not depend
                  on this.

                  If s is not a null pointer, wctomb() returns the number of
                  bytes in the multibyte character corresponding to the
                  value of wchar, or -1 if the value of wchar does not
                  correspond to a valid multibyte character.  The value
                  returned is never greater than the value of the MB_CUR_MAX
                  macro.

      mbstowcs()  Convert a sequence of multibyte characters from the array
                  pointed to by s into a sequence of corresponding codes and
                  store these codes into the array pointed to by pwcs,
                  stopping after either n codes or a code with value zero (a
                  converted null character) is stored.  Each multibyte
                  character is converted as if by a call to mbtowc().  No
                  more than n elements are modified in the array pointed to
                  by pwcs.

                  If an invalid multibyte character is encountered,
                  mbstowcs() returns (size_t)-1.  Otherwise, mbstowcs()
                  returns the number of array elements modified, not



 Hewlett-Packard Company            - 2 -     HP-UX Release 9.0: August 1992






 multibyte(3C)                                                 multibyte(3C)





                  including a terminating zero code, if any.  The array is
                  not null- or zero-terminated if the value returned is n.
                  If pwcs is a null pointer, mbstowcs() returns the number
                  of elements required for the wide-character-code array.

      wcstombs()  Convert a sequence of codes corresponding to multibyte
                  characters from the array pointed to by pwcs into a
                  sequence of multibyte characters and store them into the
                  array pointed to by s, stopping if a multibyte character
                  exceeds the limit of n total bytes or if a null character
                  is stored.  Each code is converted as if by a call to
                  wctomb().  No more than n bytes are modified in the array
                  pointed to by s.

                  If a code is encountered that does not correspond to a
                  valid multibyte character, wcstombs() returns (size_t)-1.
                  Otherwise, wcstombs() returns the number of bytes
                  modified, not including a terminating null character, if
                  any.  The array is not null- or zero-terminated if the
                  value returned is n.  If s is a null pointer, wcstombs()
                  returns the number of bytes required for the character
                  array.

 EXTERNAL INFLUENCES
    Locale
      The LC_CTYPE category determines the behavior of the multibyte
      character and string functions.

 ERRORS
      mblen(), mbstowcs(), mbtowc(), wcstombs() and wctomb() may fail and
      errno is set if the following condition is encountered:

           [EILSEQ]       An invalid multibyte sequence or wide character
                          code was found.

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





 Hewlett-Packard Company            - 3 -     HP-UX Release 9.0: August 1992






 multibyte(3C)                                                 multibyte(3C)





 AUTHOR
      The multibyte functions in this entry were developed by HP.

 SEE ALSO
      setlocale(3C), nl_tools_16(3C), wctype(3X).

 STANDARDS CONFORMANCE
      mblen(): AES, XPG4, ANSI C
      mbstowcs(): AES, XPG4, ANSI C

      mbtowc(): AES, XPG4, ANSI C
      wcstombs(): AES, XPG4, ANSI C

      wctomb(): AES, XPG4, ANSI C








































 Hewlett-Packard Company            - 4 -     HP-UX Release 9.0: August 1992