mbrlen -- get number of bytes in a character (restartable)
      Standard C Library (libc, -lc)
      #include <wchar.h>
     size_t
     mbrlen(const char * restrict s, size_t n, mbstate_t * restrict ps);
     The mbrlen() function determines the number of bytes constituting the
     multibyte character sequence pointed to by s, examining at most n bytes.
     The mbstate_t argument, ps, is used to keep track of the shift state.  If
     it is NULL, mbrlen() uses an internal, static mbstate_t object.
     It is equivalent to:
	   mbrtowc(NULL, s, n, ps);
     Except that when ps is a NULL pointer, mbrlen() uses its own static,
     internal mbstate_t object to keep track of the shift state.
     The mbrlen() functions returns:
     0	     The first n or fewer bytes of s represent the null wide character
	     (L'\0').
     >0      The first n or fewer bytes of s represent a valid character,
	     mbrtowc() returns the length (in bytes) of the multibyte
	     sequence.
     (size_t)-2
	     The first n bytes of s are an incomplete multibyte sequence.
     (size_t)-1
	     The byte sequence pointed to by s is an invalid multibyte
	     sequence.
     A function which calculates the number of characters in a multibyte character
 string:
	   size_t
	   nchars(const char *s)
	   {
		   size_t charlen, chars;
		   mbstate_t mbs;
		   chars = 0;
		   memset(&mbs, 0, sizeof(mbs));
		   while ((charlen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 &&
		       charlen != (size_t)-1 && charlen != (size_t)-2) {
			   s += charlen;
			   chars++;
		   }
		   return (chars);
	   }
     The mbrlen() function will fail if:
     [EILSEQ]		An invalid multibyte sequence was detected.
     mblen(3), mbrtowc(3)
     The mbrlen() function conforms to ISO/IEC 9899:1999 (``ISO C99'').
      The current implementation does not support shift states.
FreeBSD 5.2.1		       November 11, 2002		 FreeBSD 5.2.1  [ Back ] |