Namespaces
Variants

wcscpy, wcscpy_s

From cppreference.net
< c ‎ | string ‎ | wide
Défini dans l'en-tête <wchar.h>
(1)
wchar_t * wcscpy ( wchar_t * dest, const wchar_t * src ) ;
(depuis C95)
(jusqu'à C99)
wchar_t * wcscpy ( wchar_t * restrict dest, const wchar_t * restrict src ) ;
(depuis C99)
errno_t wcscpy_s ( wchar_t * restrict dest, rsize_t destsz,
const wchar_t * restrict src ) ;
(2) (depuis C11)
1) Copie la chaîne large pointée par src (incluant le caractère large nul de terminaison) vers le tableau de caractères large pointé par dest . Le comportement est indéfini si le tableau dest n'est pas suffisamment grand. Le comportement est indéfini si les chaînes se chevauchent.
2) Identique à (1) , sauf qu'il peut écraser le reste du tableau de destination avec des valeurs non spécifiées et que les erreurs suivantes sont détectées à l'exécution et appellent la fonction gestionnaire de contraintes actuellement installée :
  • src ou dest est un pointeur nul
  • destsz est zéro ou supérieur à RSIZE_MAX / sizeof ( wchar_t )
  • destsz est inférieur ou égal à wcsnlen_s ( src, destsz ) , en d'autres termes, une troncation se produirait
  • un chevauchement se produirait entre les chaînes source et destination
Comme pour toutes les fonctions à vérification des limites, wcscpy_s n'est garantie d'être disponible que si __STDC_LIB_EXT1__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT1__ à la constante entière 1 avant d'inclure <wchar.h> .

Table des matières

Paramètres

dest - pointeur vers le tableau de caractères larges à copier
src - pointeur vers la chaîne large terminée par un caractère nul à copier
destsz - nombre maximum de caractères à écrire, généralement la taille du tampon de destination

Valeur de retour

1) renvoie une copie de dest
2) renvoie zéro en cas de succès, renvoie une valeur non nulle en cas d'erreur. De plus, en cas d'erreur, écrit L ' \0 ' dans dest [ 0 ] (sauf si dest est un pointeur nul ou destsz est zéro ou supérieur à RMAX_SIZE / sizeof ( wchar_t ) ).

Exemple

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    wchar_t* src = L"犬 means dog";
//  src[0] = L'狗' ; // ceci serait un comportement indéfini
    wchar_t dst[wcslen(src) + 1]; // +1 pour le terminateur nul
    wcscpy(dst, src);
    dst[0] = L'狗'; // OK
    setlocale(LC_ALL, "en_US.utf8");
    printf("src = %ls\ndst = %ls\n", src, dst);
}

Sortie :

src = 犬 means dog
dst = 狗 means dog

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.29.4.1.2 La fonction wcscpy (p: TBD)
  • K.3.9.2.1.1 La fonction wcscpy_s (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018):
  • 7.29.4.1.2 La fonction wcscpy (p: TBD)
  • K.3.9.2.1.1 La fonction wcscpy_s (p: TBD)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.29.4.1.2 La fonction wcscpy (p: 430)
  • K.3.9.2.1.1 La fonction wcscpy_s (p: 639)
  • Norme C99 (ISO/IEC 9899:1999) :
  • 7.24.4.1.2 La fonction wcscpy (p: 376)

Voir aussi

copie un certain nombre de caractères larges d'une chaîne à une autre
(fonction)
copie un certain nombre de caractères larges entre deux tableaux non chevauchants
(fonction)
copie une chaîne vers une autre
(fonction)