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 destinationnumberOfElements
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
Voir aussi
Référence
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