Nous recommandons d’utiliser Visual Studio 2017

strcpy_s, wcscpy_s, _mbscpy_s

 

Date de publication : novembre 2016

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Copie une chaîne. Ces versions de strcpy, wcscpy, _mbscpy ont des améliorations de sécurité, comme décrit dans fonctionnalités de sécurité de la bibliothèque CRT.

System_CAPS_ICON_important.jpg Important

_mbscpy_s ne peut pas être utilisée dans les applications qui s'exécutent dans Windows Runtime. 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 la mémoire tampon de chaîne de destination.

numberOfElements
Taille de la mémoire tampon de chaîne de destination en unités char pour les fonctions étroites et multioctets, et en unités wchar_t pour les fonctions larges.

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

Zéro en cas de réussite ; erreur dans un autre cas.

Conditions d’erreur

strDestinationnumberOfElementsstrSourceValeur de retourContenu de strDestination
NULLanyanyEINVALnon modifié
anyanyNULLEINVALstrDestination[0] a la valeur 0
tous0 ou trop petitanyERANGEstrDestination[0] a la valeur 0

La fonction strcpy_s copie le contenu dans l'adresse de 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 et son caractère null de fin. Le comportement de strcpy_s n'est pas défini si les chaînes source et de destination se chevauchent.

wcscpy_s est la version à caractères larges de strcpy_s et _mbscpy_s est la version à caractères multioctets. Les arguments et la valeur de retour de wcscpy_s sont des chaînes de caractères larges ; ceux de _mbscpy_s sont des chaînes de caractères multioctets. Ces trois fonctions se comportent sinon de façon identique.

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 de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent EINVAL et attribuent à errno la valeur EINVAL quand strDestination ou strSource est un pointeur null ; elles retournent ERANGE et attribuent à errno la valeur ERANGE quand la chaîne de destination est trop petite.

Si l'exécution aboutit, la chaîne de destination se termine toujours par un caractère null.

En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle qui peuvent déduire la longueur de la mémoire tampon automatiquement, ce qui vous évite ainsi d’avoir à spécifier un argument de taille, et elles peuvent remplacer automatiquement les fonctions plus anciennes et moins sécurisées par leurs équivalents plus récents et sécurisés. Pour plus d'informations, consultez Secure Template Overloads.

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

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_MBCS défini_UNICODE défini
_tcscpy_sstrcpy_s_mbscpy_swcscpy_s
RoutineEn-tête requis
strcpy_s<string.h>
wcscpy_s<string.h> ou <wchar.h>
_mbscpy_s<mbstring.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité.

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

String = Hello world from strcpy_s and strcat_s!  

System::String::Copy

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

Afficher: