![]() Chapter Contents |
![]() Previous |
![]() Next |
| mblen |
| Portability: | ISO/ANSI C conforming |
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| CAUTIONS | |
| EXAMPLE |
| SYNOPSIS |
#include <stdlib.h> int mblen(const char *s, size_t n);
| DESCRIPTION |
mblen
determines how many bytes are needed to represent the multibyte
character pointed to by
s
.
n
specifies the maximum number of bytes of the multibyte character sequence
to examine.
| RETURN VALUE |
If
s
is not
NULL
, the
return value is as follows:
0
|
is returned if
s
points to the null character. |
| length of the multibyte character |
is returned if the next
n
|
-1
|
is returned if the next
n
or fewer bytes do not constitute a valid multibyte
character. |
If
s
is
NULL
, the return value
is as follows:
| nonzero value | is returned if the current locale supports state-dependent encodings. |
0
|
is returned if the current locale does not support state-dependent encodings. |
| CAUTIONS |
A diagnostic is not issued if
mblen
encounters invalid data; a return value
of
-1
is the only indication
of an error.
| EXAMPLE |
/* This example counts multibyte characters (not including */
/* terminating null) in a DBCS mixed string using mblen(). */
#include <locale.h>
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
/* "strptr" points to the beginning of a DBCS MIXED string. */
/* RETURNS: number of multibyte characters */
int count1(char *strptr)
{
int i = 0; /* number of multibyte characters found */
int charlen; /* byte length of current characte */
/* Inform library that we will be accepting a DBCS string. */
/* That is, SO and SI are not regular control characters: */
/* they indicate a change in shift state. */
setlocale(LC_ALL, "dbcs");
/* Reset to initial shift state. (A valid mixed string */
/* must begin in initial shift state). */
mblen(NULL, 0);
/* One loop iteration per character. Advance "strptr" by */
/* number of bytes consumed. */
while (charlen = mblen(strptr, MB_LEN_MAX)) {
if (charlen < 0) {
fputs("Invalid MIXED DBCS string", stderr);
abort();
fclose(stderr);
}
strptr += charlen;
i++;
}
return i;
}
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.