mbtowc
Nach oben zu stdlib.h - Index
Header-Datei
stdlib.h
Kategorie
Konvertierungsroutinen, Routinen für Speicher- und String-Bearbeitung
Prototyp
int mbtowc(wchar_t *pwc, const char *s, size_t n);
Beschreibung
Konvertiert ein Multibyte-Zeichen in ein Zeichen des Typs wchar_t.
Ist s nicht NULL, ermittelt mbtowc die Anzahl der Bytes, aus denen sich das Multibyte-Zeichen zusammensetzt, auf das s zeigt. Anschließend ermittelt mbtowc den Wert des Typs wchar_t, der diesem Multibyte-Zeichen entspricht. Stimmen wchar_t und das Multibyte-Zeichen überein, und pwc ist nicht NULL, wird der wchar_t-Wert in dem Array gespeichert, auf das pwc zeigt. Maximal werden n Zeichen überprüft.
Rückgabewert
Zeigt s auf ein ungültiges Multibyte-Zeichen, wird -1 zurückgegeben. Zeigt s auf das Nullzeichen, wird 0 zurückgegeben. Andernfalls gibt mbtowc die Anzahl der Bytes zurück, aus denen sich das konvertierte Multibyte-Zeichen zusammensetzt.
Der Rückgabewert überschreitet nie MB_CUR_MAX oder den Wert von n.
Beispiel
#include <stdlib.h>
#include <stdio.h>
void main(void)
{
int x;
char *mbchar = (char *)calloc(1, sizeof( char));
wchar_t wchar = L'a';
wchar_t *pwcnull = NULL;
wchar_t *pwchar = (wchar_t *)calloc(1, sizeof( wchar_t ));
printf ("Convert a wide character to multibyte character:\n");
x = wctomb( mbchar, wchar);
printf( "\tCharacters converted: %u\n", x);
printf( "\tMultibyte character: %x\n\n", mbchar);
printf ("Convert multibyte character back to a wide character:\n");
x = mbtowc( pwchar, mbchar, MB_CUR_MAX );
printf( "\tBytes converted: %u\n", x);
printf( "\tWide character: %x\n\n", pwchar);
printf ("Atempt to convert when target is NULL\n" );
printf (" returns the length of the multibyte character:\n" );
x = mbtowc (pwcnull, mbchar, MB_CUR_MAX );
printf ( "\tlength of multibyte character:%u\n\n", x );
printf ("Attempt to convert a NULL pointer to a" );
printf (" wide character:\n" );
mbchar = NULL;
x = mbtowc( pwchar, mbchar, MB_CUR_MAX );
printf( "\tBytes converted: %u\n", x );
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |