wctomb
Nach oben zu stdlib.h - Index
Header-Datei
stdlib.h
Kategorie
Konvertierungsroutinen, Routinen für Speicher- und String-Bearbeitung
Prototyp
int wctomb(char *s, wchar_t wc);
Beschreibung
Konvertiert ein Zeichen des Typs wchar_t in ein Multibyte-Zeichen.
Ist s nicht NULL, ermittelt wctomb die Anzahl der Bytes, die notwendig sind, um das wc entsprechende Multibyte-Zeichen darzustellen (einschließlich eventueller Zustandsänderungen). Das Multibyte-Zeichen wird in s gespeichert. Maximal werden MB_CUR_MAX Zeichen gespeichert. Ist der Wert von wc Null, belässt wctomb den ursprünglichen Zustand.
Das Verhalten von wctomb wird von der Einstellung der Kategorie LC_CTYPE des aktuellen Gebietsschemas beeinflusst.
Rückgabewert
Ist s ein NULL-Zeiger, gibt wctomb einen Wert ungleich Null zurück, wenn Multibyte-Zeichen eine länderabhängige Codierung haben, und Null, wenn das nicht der Fall ist.
Ist s kein NULL-Zeiger, gibt wctomb -1 zurück, wenn der Wert von wc kein gültiges Multibyte-Zeichen ist. In allen anderen Fällen gibt wctomb die Anzahl der Bytes zurück, aus denen sich das wc entsprechende Multibyte-Zeichen zusammensetzt. In keinem Fall ist der Rückgabewert größer als der Wert des Makros MB_CUR_MAX.
Beispiel
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int x;
wchar_t wc = L'a';
char *pmbNULL = NULL;
char *pmb = (char *)malloc(sizeof( char ));
printf (" Convert a wchar_t array into a multibyte string:\n");
x = wctomb( pmb, wc);
printf ("Character converted: %u\n", x);
printf ("Multibyte string: %1s\n\n",pmb);
printf (" Convert when target is NULL\n");
x = wctomb( pmbNULL, wc);
printf ("Character converted: %u\n",x);
printf ("Multibyte stri ng: %1s\n\n",pmbNULL);
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |