strcpy_s, wcscpy_s, _mbscpy_s
Copiare una stringa.Queste sono versioni di strcpy, wcscpy, _mbscpy con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
Importante |
---|
_mbscpy_s non può essere utilizzato nelle applicazioni eseguite nelle finestre runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /ZW. |
errno_t strcpy_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
errno_t wcscpy_s(
wchar_t *strDestination,
size_t numberOfElements,
const wchar_t *strSource
);
errno_t _mbscpy_s(
unsigned char *strDestination,
size_t numberOfElements,
const unsigned char *strSource
);
template <size_t size>
errno_t strcpy_s(
char (&strDestination)[size],
const char *strSource
); // C++ only
template <size_t size>
errno_t wcscpy_s(
wchar_t (&strDestination)[size],
const wchar_t *strSource
); // C++ only
template <size_t size>
errno_t _mbscpy_s(
unsigned char (&strDestination)[size],
const unsigned char *strSource
); // C++ only
Parametri
strDestination
Posizione del buffer di stringa di destinazionenumberOfElements
Dimensione del buffer della stringa di destinazione.strSource
Buffer della stringa sorgente che termina con Null.
Valore restituito
Zero se ha esito positivo; un errore in caso contrario.
Condizioni di errore
strDestination |
numberOfElements |
strSource |
Valore restituito |
Contenuti di strDestination. |
---|---|---|---|---|
NULL |
any |
any |
EINVAL |
non modificato |
any |
any |
NULL |
EINVAL |
Impostare strDestination[0] a 0 |
any |
0, o troppo piccolo. |
any |
ERANGE |
Impostare strDestination[0] a 0 |
Note
La funzione di strcpy_s copia il contenuto dell'indirizzo di strSource, incluso il carattere di terminazione null, la posizione specificata da strDestination.La stringa di destinazione deve essere sufficiente per contenere la stringa di origine, incluso il carattere di terminazione null.Il comportamento di strcpy_s non è definito se le stringhe di origine e di destinazione si sovrappongono.
wcscpy_s e _mbscpy_s disponibili versioni a caratteri estesi e di caratteri multibyte di strcpy_s rispettivamente.Gli argomenti e il valore restituito di wcscpy_s sono stringhe di caratteri estesi, tali di _mbscpy_s sono stringhe di caratteri multibyte.Altrimenti queste tre funzioni si comportano in modo identico.
Se strDestination o strSource è un puntatore null, o se la stringa di destinazione è troppo piccola, il gestore non valido di parametro viene richiamato come descritto in Convalida dei parametri.Se all'esecuzione è permesso continuare, queste funzioni restituiscono EINVAL e impostano errno a EINVAL.
Sulla corretta esecuzione, la stringa di destinazione sarà sempre con terminazione null.
In C++, l'utilizzo di queste funzioni è semplificato dagli overload dei modelli; gli overload possono dedurre la lunghezza del buffer automaticamente (che elimina la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti, quelle non sicure alle più recenti e le controparti sicure.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.
Le versioni di debug di queste funzioni innanzitutto soddisfano il buffer di 0xFE.Per disabilitare questo comportamento, utilizzare _CrtSetDebugFillThreshold.
Mapping di routine a Testo generico
TCHAR.H routine |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcscpy_s |
strcpy_s |
_mbscpy_s |
wcscpy_s |
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
strcpy_s |
<string.h> |
wcscpy_s |
<string.h> o <wchar.h> |
_mbscpy_s |
<mbstring.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Esempio
// crt_strcpy_s.cpp
// This program uses strcpy_s and strcat_s
// to build a phrase.
//
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
char string[80];
// using template versions of strcpy_s and strcat_s:
strcpy_s( string, "Hello world from " );
strcat_s( string, "strcpy_s " );
strcat_s( string, "and " );
// of course we can supply the size explicitly if we want to:
strcat_s( string, _countof(string), "strcat_s!" );
printf( "String = %s\n", string );
}
Equivalente .NET Framework
Vedere anche
Riferimenti
strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l