Chapter Contents |
Previous |
Next |
wctomb |
Portability: | ISO/ANSI C conforming |
SYNOPSIS | |
DESCRIPTION | |
RETURN VALUE | |
CAUTIONS | |
EXAMPLE |
SYNOPSIS |
#include <stdlib.h> int wctomb(char *s, wchar_t wchar);
DESCRIPTION |
wctomb
determines how many bytes are needed to represent the multibyte
character corresponding to the wide (pure DBCS) character whose value is
wchar
, including any change in
shift state. It stores the multibyte character representation in the array
pointed to by
s
, assuming
s
is not
NULL
. If the value of
wchar
is
0
,
wctomb
is left
in the initial shift state.
RETURN VALUE |
If
s
is not
NULL
, the
return value is the number of bytes that make up the multibyte character corresponding
to the value of
wchar
.
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. |
The return value is never greater than the value of
the
MB_CUR_MAX
macro.
CAUTIONS |
A diagnostic is not issued if
wctomb
encounters invalid data; a return value
of
-1
is the only indication
of an error.
EXAMPLE |
This example converts a PURE DBCS string
to MIXED, stopping at the first new-line character. This example uses
wctomb
.
#include <stdlib.h> #include <locale.h> #include <limits.h> #include <stdlib.h> #include <stdio.h> #define MAX_CHARACTERS 81 /* "pure_string" is the input PURE DBCS string. */ /* "mixed_string" the output MIXED DBCS string. */ void mbline(wchar_t *pure_string, char *mixed_string) { int i; int mbclen; wchar_t wc; /* 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"); wctomb(NULL, 0); /* Reset to initial shift state. */ /* One loop iteration per character. Advance "mixed_string"*/ /* by number of bytes in character. */ i = 0; do { wc = pure_string[i++]; mbclen = wctomb(mixed_string, wc); if (mbclen < 0) { puts("Invalid PURE DBCS string.\n"); abort(); fclose(stdout); } mixed_string += mbclen; } while (wc != L'\n'); *mixed_string = '\0'; }
Chapter Contents |
Previous |
Next |
Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.