Freigeben über


_mbccpy_s, _mbccpy_s_l

Kopiert ein Multibytezeichen von einer Zeichenfolge in eine andere Zeichenfolge. Diese Versionen von _mbccpy, _mbccpy_l verfügen über Sicherheitsverbesserungen, wie in sicherheitsfeatures im CRT beschrieben.

Wichtig

Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).

Syntax

errno_t _mbccpy_s(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src
);
errno_t _mbccpy_s_l(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src,
   _locale_t locale
);
template <size_t size>
errno_t _mbccpy_s(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src
); // C++ only
template <size_t size>
errno_t _mbccpy_s_l(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src,
   _locale_t locale
); // C++ only

Parameter

dest
Kopierziel.

buffSizeInBytes
Größe des Zielpuffers.

pCopied
Wird mit der Anzahl kopierter Bytes gefüllt (bei Erfolg 1 oder 2). Übergeben Sie NULL, wenn die Zahl nicht relevant ist.

src
Zu kopierendes Multibytezeichen.

locale
Zu verwendendes Gebietsschema.

Rückgabewert

Null, wenn erfolgreich, ein Fehlercode, wenn ein Fehler auftritt. Wenn src oder ist NULL, dest oder wenn mehr als buffSizeinBytes Bytes in kopiert destwerden würde, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die Ausführung fortgesetzt werden darf, werden die Funktionen zurückgegeben EINVALund errno auf .EINVAL

Hinweise

Die _mbccpy_s-Funktion kopiert ein Multibytezeichen von src in dest. Wenn src nicht auf das Leadbytebyte-Byte eines Multibyte-Zeichens zeigt, wie durch einen impliziten Aufruf _ismbbleadbestimmt wird, wird das einzelne Byte kopiert, auf das src verweist. Wenn src auf ein Leadbyte zeigt, aber das folgende Byte 0 und somit ungültig ist, wird 0 in dest, wird auf EILSEQ, errno und die Funktion wird zurückgegebenEILSEQ.

_mbccpy_s fügt keinen Null-Terminator an; src Wenn sie jedoch auf ein NULL-Zeichen zeigt, wird diese Null kopiert dest (als normale Einzelbytekopie).

Der Wert in pCopied wird mit der Anzahl kopierter Bytes gefüllt. Mögliche Werte sind 1 und 2, wenn der Vorgang erfolgreich ist. Wenn NULL übergeben wird, wird dieser Parameter ignoriert.

src kopiert nach dest pCopied Rückgabewert
kein führendes Byte kein führendes Byte 1 0
0 0 1 0
führendes Byte gefolgt von Nicht-0 führendes Byte gefolgt von Nicht-0 2 0
führendes Byte gefolgt von 0 0 1 EILSEQ

Die zweite Zeile ist nur ein Sonderfall der ersten Zeile. Die Tabelle geht davon aus, dass buffSizeInBytes>= pCopied.

_mbccpy_s verwendet das aktuelle Gebietsschema für jedes gebietsschemaabhängige Verhalten. _mbccpy_s_l ist mit _mbccpy_s identisch, außer dass _mbccpy_s_l das Gebietsschema verwendet, das für jedes gebietsschemaabhängige Verhalten übergeben wurde.

Die Verwendung dieser Funktionen in C++ wird durch Überladungen (als Vorlagen vorhanden) vereinfacht. Überladungen können automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter Secure Template Overloads.

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.

Mapping generischer Textroutinen

Tchar.h-Routine _UNICODE und _MBCS nicht definiert _MBCS definiert _UNICODE definiert
_tccpy_s Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus. _mbccpy_s Führt eine Zuordnung zum Makro oder zur Inlinefunktion aus.

Anforderungen

Routine Erforderlicher Header
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

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

Siehe auch

Gebietsschema
Interpretation von Multibytezeichensequenzen
_mbclen, mblen_mblen_l