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 :
srcoudestest un pointeur nuldestszest nul ou supérieur àRSIZE_MAX / sizeof(wchar_t)destszest 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_sn'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ère1avant 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
dest2) 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
Exécuter ce code
#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
(C95)(C11) |
copie une certaine quantité de caractères larges d'une chaîne à une autre (fonction) |
(C95)(C11) |
copie une certaine quantité de caractères larges entre deux tableaux non chevauchants (fonction) |
(C11) |
copie une chaîne vers une autre (fonction) |
Documentation C++ pour wcscpy
| |