mbchar(3C) mbchar(3C)
NAME
mbchar: mbtowc, mblen, wctomb, mbrlen, mbrtowc, wcrtomb - Mehrbytezei-
chen umwandeln
SYNTAX
#include <stdlib.h>
#include <wchar.h>
int mbtowc(wchart *pwc, const char *s, sizet n);
int mblen(const char *s, sizet n);
int wctomb(char *s, wchart wchar);
sizet mbrlen(const char *s, sizet n, mbstatet *ps);
sizet mbrtowc(wchart *pwc, const char *s, sizet n, mbstatet *ps);
sizet wcrtomb(char *s, wchart wc, mbstatet *ps);
BESCHREIBUNG
Mehrbytezeichen werden verwendet, um Zeichen in einem erweiterten Zei-
chensatz darzustellen. Dies wird für internationale Umgebungen benö-
tigt, in denen 8 Bits zur Darstellung aller Zeichen im Zeichensatz
nicht ausreichen.
Mit diesen Funktionen können Mehrbytezeichen in Wide-Characters über-
setzt werden und umgekehrt. Wide-Characters sind vom Typ wchart
(definiert in stdlib.h); hierbei handelt es sich um einen ganzzahligen
Typ, dessen Wertebereich alle Komponenten des größten erweiterten Zei-
chensatzes aus den unterstützten internationalen Umgebungen darstellen
kann.
Für jede internationale Umgebung werden maximal drei erweiterte Zei-
chensätze unterstützt. Die Anzahl der Bytes in einem erweiterten Zei-
chensatz wird durch die Kategorie LCCTYPE der Umgebung definiert
[siehe setlocale(3C)]. Die maximale Anzahl von Bytes, die zur Darstel-
lung eines Mehrbytezeichens verwendet werden kann, ist nie größer als
MBLENMAX, einer in limits.h definierten Konstanten. Die maximale
Anzahl von Bytes für ein Zeichen des erweiterten Zeichensatzes in der
aktuellen Umgebung wird durch das Makro MBCURMAX festgelegt, das in
stdlib.h definiert ist.
mbtowc() bestimmt die Anzahl der Bytes, die das Mehrbytezeichen ent-
hält, auf das s zeigt. Wenn pwc kein Nullzeiger ist, wandelt mbtowc()
das Mehrbytezeichen in ein Wide-Character um und schreibt das Ergebnis
in das Objekt, auf das pwc zeigt. Der Wert des Wide-Characters für das
Nullzeichen ist Null. Bis zu n Zeichen werden geprüft, angefangen mit
dem Zeichen, auf das s zeigt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
mbchar(3C) mbchar(3C)
Wenn s ein Nullzeiger ist, gibt mbtowc() 0 zurück. Wenn s kein Null-
zeiger ist, aber auf das Nullzeichen zeigt, gibt mbtowc() 0 zurück;
wenn die nächsten n oder weniger Bytes ein gültiges Mehrbytezeichen
darstellen, gibt mbtowc() die Anzahl der Bytes zurück, die das umge-
wandelte Mehrbytezeichen belegt; andernfalls zeigt s nicht auf ein
gültiges Mehrbytezeichen, und mbtowc() gibt -1 zurück.
mblen() bestimmt die Anzahl der Bytes in dem Mehrbytezeichen, auf das
s zeigt. Diese Funktion entspricht folgendem Aufruf:
mbtowc((wchart *)0, s, n);
wctomb() bestimmt die Anzahl der Bytes, die zur Darstellung des Mehr-
bytezeichens mit dem Code wchar benötigt werden. Wenn s kein Nullzei-
ger ist, wird die Mehrbytezeichendarstellung in dem Array gespeichert,
auf den s zeigt. Maximal MBCURMAX Zeichen werden gespeichert.
Wenn s ein Nullzeiger ist, gibt wctomb() 0 zurück. Ist s kein Nullzei-
ger, gibt wctomb() -1 zurück, wenn der Wert von wchar keinem gültigen
Mehrbytezeichen entspricht; andernfalls wird die Anzahl der Bytes
zurückgegeben, die das Mehrbytezeichen mit dem Code wchar belegt.
Erneut startbare Umwandlungsfunktionen für Mehrbyte-/Wide-Characters
Diese Funktionen unterscheiden sich von den entsprechenden Mehrbyte-
zeichenfunktionen mblen(), mbtowc() und wctomb() dahingehend, daß sie
einen zusätzlichen Parameter ps haben, der ein Zeiger auf mbstatet
ist und auf ein Objekt zeigt, das den aktuellen Umwandlungsstatus der
entsprechenden Mehrbytezeichenfolge vollständig beschreiben kann. Wenn
ps ein Nullzeiger ist, verwendet jede Funktion ihr eigenes, internes
mbstatet-Objekt, das beim Programmstart mit dem Anfangsumwandlungs-
status initialisiert wird. Die Implementierung verhält sich dabei so,
als würde keine Bibliotheksfunktion diese Funktionen mit einem Null-
zeiger für ps aufrufen.
Die Funktion mbrlen() entspricht folgendem Aufruf:
mbrtowc(NULL, s, n, ps != NULL ? ps : &internal)
Hierbei ist internal das Objekt mbstatet für die Funktion mbrlen().
Die Funktion mbrlen() gibt (sizet)-2, (sizet)-1 zurück, das heißt,
einen Wert zwischen Null und n einschließlich.
Wenn s ein Nullzeiger ist, entspricht die Funktion mbrtowc() folgendem
Aufruf:
mbrtowc(NULL, "", l, ps)
In diesem Fall werden die Werte der Parameter pwc und n ignoriert.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
mbchar(3C) mbchar(3C)
Wenn s ein Nullzeiger ist, entspricht die Funktion wcrtomb() folgendem
Aufruf:
wcrtobm(buf, L'\0', ps)
Hierbei ist buf ein interner Puffer.
SIEHE AUCH
chrtbl(1M), mbstring(3C), setlocale(3C), environ(5), stdlib(5),
wchar(5).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98