mbtowc

Aus RAD Studio
Wechseln zu: Navigation, Suche

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++

+

+

+

+