Partager via


strcpy_s, wcscpy_s, _mbscpy_s

Copiez une chaîne.Ce sont des versions de strcpy, wcscpy, _mbscpy avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.

Important

_mbscpy_s ne peut pas être utilisé dans les applications qui s'exécutent dans les fenêtres d'exécution.Pour plus d'informations, consultez Fonctions CRT non prises en charge avec /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

Paramètres

  • strDestination
    Emplacement de mémoire tampon de chaîne de destination

  • numberOfElements
    Taille de la mémoire tampon de chaîne de destination.

  • strSource
    Mémoire tampon de chaîne se terminant par null source.

Valeur de retour

Zéro si l'opération a réussi ; une erreur sinon.

Conditions d'erreur

strDestination

numberOfElements

strSource

Valeur de retour

Contenu d' strDestination

NULL

any

any

EINVAL

non modifié

any

any

NULL

EINVAL

strDestination[0] a la valeur 0

any

0, ou trop grand

any

ERANGE

strDestination[0] a la valeur 0

Notes

La fonction d' strcpy_s copie le contenu de l'adresse d' strSource, y compris le caractère NULL de fin, à l'emplacement spécifié par strDestination.La chaîne de destination doit être suffisamment grande pour contenir la chaîne source, y compris le caractère NULL de fin.Le comportement d' strcpy_s n'est pas défini si la source et les chaînes de destination se chevauchent.

wcscpy_s et _mbscpy_s sont à caractères larges et des versions à caractères multioctets d' strcpy_s respectivement.Les arguments et la valeur de retour d' wcscpy_s sont des chaînes à caractères larges ; ces d' _mbscpy_s sont des chaînes à caractères multioctets.Ces trois fonctions se comportent de sinon.

Si strDestination ou strSource est un pointeur null, ou si la chaîne de destination est trop petite, le gestionnaire de paramètre non valide est appelé comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, ces fonctions EINVAL de retour et affectez errno à EINVAL.

Lors de l'exécution réussie, la chaîne de destination est toujours null terminée.

En C++, l'utilisation de ces fonctions est simplifié par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement (éliminant le besoin de spécifier un argument de taille) et peuvent remplacer automatiquement des fonctions plus anciennes et non sécurisées par leurs nouvelles, sécurisées équivalents.Pour plus d'informations, consultez Surcharges sécurisées de modèle.

Les versions debug de ces fonctions exécutent d'abord mémoire tampon de 0xFE.Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Mappages de routines de texte générique

Routine de TCHAR.H

_UNICODE et non définis _MBCS

_MBCS défini

_UNICODE défini

_tcscpy_s

strcpy_s

_mbscpy_s

wcscpy_s

Configuration requise

Routine

En-tête requis

strcpy_s

<string.h>

wcscpy_s

<string.h> ou <wchar.h>

_mbscpy_s

<mbstring.h>

Pour des informations de compatibilité supplémentaires, consultez l' Compatibilité dans l'introduction.

Exemple

// 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 );
}
  

Équivalent .NET Framework

System::String::Copy

Voir aussi

Référence

Manipulation de chaînes (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