Namespaces
Variants

wcscpy, wcscpy_s

De fr.cppreference.net
 
 
 
 
Défini dans l'en-tête <wchar.h>
wchar_t* wcscpy( wchar_t* dest, const wchar_t* src );
(1) (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 (y compris le caractère large nul de fin) vers le tableau de caractères larges pointé par dest. Le comportement est indéfini si le tableau dest n'est pas assez grand. Le comportement est indéfini si les chaînes se chevauchent.
2) Identique à (1), sauf qu'elle 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 contrainte actuellement installée :
  • src ou dest est un pointeur nul
  • destsz est nul ou supérieur à RSIZE_MAX / sizeof(wchar_t)
  • destsz est inférieur ou égal à wcsnlen_s(src, destsz), en d'autres termes, une troncature se produirait
  • un chevauchement se produirait entre les chaînes source et destination
Comme toutes les fonctions avec vérification des bornes, 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__ comme la constante entière 1 avant d'inclure <wchar.h>.

Paramètres

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

Valeur retournée

1) retourne une copie de dest
2) retourne zéro en cas de succès, retourne non nul en cas d'erreur. De plus, en cas d'erreur, écrit L'\0' dans dest[0] (sauf si dest est un pointeur nul ou que destsz est nul 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'狗' ; // this would be undefined behavior
    wchar_t dst[wcslen(src) + 1]; // +1 for the null terminator
    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.31.4.2.1 La fonction wcscpy (p: 438)
  • K.3.9.3.1.1 La fonction wcscpy_s (p: 663)
  • Norme C17 (ISO/IEC 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 une certaine quantité de caractères larges d'une chaîne à une autre
(fonction)
copie une certaine quantité de caractères larges entre deux tableaux non chevauchants
(fonction)
copie une chaîne vers une autre
(fonction)
Documentation C++ pour wcscpy