Condividi tramite


_mbccpy_s, _mbccpy_s_l

Copia un carattere multibyte da una stringa in un'altra stringa. Queste versioni di hanno _mbccpy_lmiglioramenti per_mbccpy la sicurezza, come descritto in Funzionalità di sicurezza in CRT.

Importante

Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).

Sintassi

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

Parametri

dest
Destinazione della copia.

buffSizeInBytes
Dimensioni del buffer di destinazione.

pCopied
Riempito con il numero di byte copiati (1 o 2 se ha esito positivo). Passare NULL se il numero non è importante.

src
Caratteri multibyte da copiare.

locale
Impostazioni locali da usare.

Valore restituito

Zero se con esito positivo; un codice di errore in caso di errore. Se src o dest è NULLoppure se vengono copiati più di buffSizeinBytes byte in dest, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, le funzioni restituiscono EINVALe errno sono impostate su EINVAL.

Osservazioni:

La funzione _mbccpy_s copia un carattere multibyte da src a dest. Se src non punta al byte iniziale di un carattere multibyte come determinato da una chiamata implicita a _ismbblead, viene copiato il singolo byte a cui src punta. Se src punta a un byte iniziale, ma il byte seguente è 0 e pertanto non è valido, 0 viene copiato in dest, errno viene impostato su EILSEQe la funzione restituisce EILSEQ.

_mbccpy_s non aggiunge un carattere di terminazione Null; tuttavia, se src punta a un carattere Null, tale valore Null viene copiato in dest (come normale copia a byte singolo).

Il valore in pCopied viene con il numero di byte copiati. I valori possibili sono 1 e 2 se l'operazione ha esito positivo. Se viene passato NULL, questo parametro viene ignorato.

src copia in dest pCopied Valore restituito
byte non di apertura byte non di apertura 1 0
0 0 1 0
byte di apertura non seguito da 0 byte di apertura non seguito da 0 2 0
byte di apertura seguito da 0 0 1 EILSEQ

La seconda riga è solo un caso speciale della prima riga. La tabella presuppone buffSizeInBytes>= pCopied.

_mbccpy_s usa le impostazioni locali correnti per qualsiasi comportamento dipendente dalle impostazioni locali. La funzione _mbccpy_s_l è identica a _mbccpy_s, ma _mbccpy_s_l usa le impostazioni locali passate per qualsiasi comportamento dipendente dalle impostazioni locali.

In C++ l'uso di queste funzioni è semplificato dagli overload dei modelli. Gli overload possono dedurre la lunghezza del buffer automaticamente, eliminando la necessità di specificare un argomento di dimensione. Per altre informazioni, vedere Proteggere gli overload dei modelli.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Mapping di routine di testo generico

Routine Tchar.h _UNICODE e _MBCS non definito _MBCS definito _UNICODE definito
_tccpy_s Esegue il mapping a una macro o a una funzione inline. _mbccpy_s Esegue il mapping a una macro o a una funzione inline.

Requisiti

Ciclo Intestazione obbligatoria
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Vedi anche

impostazioni locali
Interpretazione di sequenze di caratteri multibyte
_mbclen, mblen, _mblen_l