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.

Nota importanteImportante

_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 destinazione

  • numberOfElements
    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

System::String::Copy

Vedere anche

Riferimenti

Modifica delle 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