wctomb_s, _wctomb_s_l

Konvertiert ein Breitzeichen in das entsprechende Multibytezeichen. Eine Version von wctomb, _wctomb_l mit Sicherheitsverbesserungen, wie in den Sicherheitsfeatures in der CRT beschrieben.

Syntax

errno_t wctomb_s(
   int *pRetValue,
   char *mbchar,
   size_t sizeInBytes,
   wchar_t wchar
);
errno_t _wctomb_s_l(
   int *pRetValue,
   char *mbchar,
   size_t sizeInBytes,
   wchar_t wchar,
   _locale_t locale
);

Parameter

pRetValue
Die Anzahl von Bytes oder ein Code, der das Ergebnis angibt.

mbchar
Die Adresse eines Multibytezeichens.

sizeInBytes
Größe des mbchar-Puffers.

wchar
Das breite Zeichen, das konvertiert werden soll.

locale
Das zu verwendende Gebietsschema.

Rückgabewert

Null, wenn erfolgreich, Fehlercode bei Fehler.

Fehlerbedingungen

mbchar sizeInBytes Rückgabewert pRetValue
NULL >0 EINVAL nicht geändert
any >INT_MAX EINVAL nicht geändert
any zu klein EINVAL nicht geändert

Wenn eine der oben genannten Fehlerbedingungen auftritt, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt wctombEINVAL zurück und setzt errno auf EINVAL.

Der Rückgabewert EILSEQ gibt an, dass der über den Parameter wchar übergebene Wert kein gültiges breites Zeichen ist.

Hinweise

Die wctomb_s-Funktion konvertiert das wchar-Argument in das entsprechende Multibytezeichen und speichert das Ergebnis in mbchar. Sie können die Funktion von einem beliebigen Punkt in einem beliebigen Programm aufrufen.

Wenn wctomb_s das Breitzeichen in ein Multibytezeichen konvertiert, wird die Anzahl von Bytes (die nie größer als MB_CUR_MAX ist) im Breitzeichen in den Integer geschrieben, auf den von pRetValue gezeigt wird. Wenn wchar das Breitzeichen NULL (L'\0') ist, füllt wctomb_spRetValue mit 1. Wenn der Zielzeiger mbchar ist NULL, wctomb_s wird 0 in pRetValue. Wenn die Konvertierung im aktuellen Gebietsschema nicht möglich ist, wctomb_s wird -1 in pRetValue.

wctomb_s verwendet das aktuelle Gebietsschema für jedes Verhalten, das vom Gebietsschema abhängig ist; _wctomb_s_l ist identisch, nur dass sie stattdessen das übergebene Gebietsschema verwendet. Weitere Informationen finden Sie unter Locale.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Routine Erforderlicher Header
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Dieses Programm stellt das Verhalten der Funktion wctomb_s dar.

// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    int i;
    wchar_t wc = L'a';
    char *pmb = (char *)malloc( MB_CUR_MAX );

    printf_s( "Convert a wide character:\n" );
    wctomb_s( &i, pmb, MB_CUR_MAX, wc );
    printf_s( "   Characters converted: %u\n", i );
    printf_s( "   Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
   Characters converted: 1
   Multibyte character: a

Siehe auch

Datenkonvertierung
Gebietsschema
_mbclen, mblen_mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte