Namespaces
Variants

wmemmove, wmemmove_s

From cppreference.net
< c ‎ | string ‎ | wide
Défini dans l'en-tête <wchar.h>
wchar_t * wmemmove ( wchar_t * dest, const wchar_t * src, size_t count ) ;
(1) (depuis C95)
errno_t wmemmove_s ( wchar_t * dest, rsize_t destsz,
const wchar_t * src, rsize_t count ) ;
(2) (depuis C11)
1) Copie exactement count caractères larges successifs du tableau de caractères larges pointé par src vers le tableau de caractères larges pointé par dest . Si count est zéro, la fonction ne fait rien. Les tableaux peuvent se chevaucher : la copie s'effectue comme si les caractères larges étaient copiés vers un tableau temporaire de caractères larges puis copiés depuis le tableau temporaire vers dest .
2) Identique à (1) , sauf 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 ou count est supérieur à RSIZE_MAX / sizeof ( wchar_t )
  • count est supérieur à destsz (un dépassement se produirait)
Comme pour toutes les fonctions à vérification de limites, wmemcpy_s n'est garanti 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 le tableau de caractères larges à copier
destsz - nombre maximal de caractères larges à écrire (la taille du tampon de destination)
count - nombre de caractères larges à copier

Valeur de retour

1) Retourne une copie de dest
2) Retourne zéro en cas de succès, retourne une valeur non nulle en cas d'erreur. De plus, en cas d'erreur, remplit entièrement dst jusqu'à mais non compris dst + dstsz avec des caractères larges nuls, L ' \0 ' (sauf si dest est nul ou destsz est supérieur à RSIZE_MAX / sizeof ( wchar_t ) )

Notes

Cette fonction n'est pas sensible aux paramètres régionaux et ne prête aucune attention aux valeurs des wchar_t qu'elle copie : les caractères nuls ainsi que les caractères non valides sont également copiés.

Exemple

#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
    setlocale(LC_ALL, "en_US.utf8");
    wchar_t str[] = L"αβγδεζηθικλμνξοπρστυφχψω";
    printf("%ls\n", str);
    wmemmove(str + 4, str + 3, 3); // copy from [δεζ] to [εζη]
    printf("%ls\n", str);
}

Sortie :

αβγδεζηθικλμνξοπρστυφχψω
αβγδδεζθικλμνξοπρστυφχψω

Références

  • Norme C23 (ISO/IEC 9899:2024):
  • 7.29.4.2.4 La fonction wmemmove (p: TBD)
  • K.3.9.2.1.4 La fonction wmemmove_s (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.29.4.2.4 La fonction wmemmove (p: TBD)
  • K.3.9.2.1.4 La fonction wmemmove_s (p: TBD)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.29.4.2.4 La fonction wmemmove (p: 432)
  • K.3.9.2.1.4 La fonction wmemmove_s (p: 642)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.24.4.2.4 La fonction wmemmove (p: 378)

Voir aussi

déplace un tampon vers un autre
(fonction)
copie un certain nombre de caractères larges entre deux tableaux non chevauchants
(fonction)
Documentation C++ pour wmemmove