_mbccpy_s
, _mbccpy_s_l
Copia un carattere multibyte da una stringa in un'altra stringa. Queste versioni di hanno _mbccpy_l
miglioramenti 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
è NULL
oppure 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 EINVAL
e 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 EILSEQ
e 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