Condividi tramite


strcpy_s, wcscpy_s, _mbscpy_s

Copia una stringa. Queste versioni di strcpy, wcscpy, _mbscpy contengono i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

Importante

_mbscpy_s non può essere utilizzato nelle applicazioni eseguite in Windows 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 della stringa di destinazione.

  • numberOfElements
    Dimensione del buffer della stringa di destinazione.

  • strSource
    Buffer della stringa di origine che termina con Null.

Valore restituito

Zero è un esito positivo. In caso contrario, un errore.

Condizioni di errore

strDestination

numberOfElements

strSource

Valore restituito

Contenuto di strDestination.

NULL

any

any

EINVAL

non modificato

any

any

NULL

EINVAL

strDestination[0] impostato su 0

any

0 o troppo piccolo

any

ERANGE

strDestination[0] impostato su 0

Note

La funzione strcpy_s copia il contenuto nell'indirizzo di strSource, incluso il carattere di terminazione null, nella posizione specificata da strDestination. La stringa di destinazione deve essere sufficientemente grande da contenere la stringa di origine e il carattere di terminazione null. Il comportamento di strcpy_s non è definito se le stringhe di origine e di destinazione si sovrappongono.

wcscpy_s è la versione con caratteri wide di strcpy_s e _mbscpy_s è la versione a caratteri multibyte. Gli argomenti e il valore restituito di wcscpy_s sono stringhe di caratteri di tipo "wide", quelli 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, viene richiamato il gestore dei parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, queste funzioni restituiscono EINVAL e impostano errno su EINVAL quando strDestination o strSource è un puntatore null e restituiscono ERANGE e impostano errno su ERANGE quando la stringa di destinazione è troppo piccola.

Quando l'esecuzione è corretta, la stringa di destinazione è sempre con terminazione null.

In C++, l'utilizzo di queste funzioni è semplificato dagli overload dei modelli che possono dedurre la lunghezza del buffer automaticamente in modo che non sia necessario specificare un argomento di dimensione e possono sostituire automaticamente le funzioni precedenti e meno sicure con le controparti più recenti e sicure. Per ulteriori informazioni, vedere Overload di modelli sicuri.

La versione di debug di queste funzioni per prima cosa riempiono il buffer con il valore 0xFE. Per disattivare questo comportamento, utilizzare _CrtSetDebugFillThreshold.

Mapping di routine su testo generico

Routine TCHAR.H

_UNICODE e _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à.

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

System::String::Copy

Vedere anche

Riferimenti

Modifica di stringhe (CRT)

strcat, wcscat, _mbscat

strcmp, wcscmp, _mbscmp

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

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

strspn, wcsspn, _mbsspn, _mbsspn_l