Namespaces
Variants

wmemmove, wmemmove_s

From cppreference.net
< c ‎ | string ‎ | wide
Definiert in Header <wchar.h>
wchar_t * wmemmove ( wchar_t * dest, const wchar_t * src, size_t count ) ;
(1) (seit C95)
errno_t wmemmove_s ( wchar_t * dest, rsize_t destsz,
const wchar_t * src, rsize_t count ) ;
(2) (seit C11)
1) Kopiert genau count aufeinanderfolgende Breitzeichen aus dem Breitzeichen-Array, auf das src zeigt, in das Breitzeichen-Array, auf das dest zeigt. Wenn count null ist, führt die Funktion keine Operation aus. Die Arrays können sich überlappen: Das Kopieren erfolgt so, als würden die Breitzeichen in ein temporäres Breitzeichen-Array kopiert und dann aus dem temporären Array in dest kopiert.
2) Gleich wie (1) , mit der Ausnahme, dass die folgenden Fehler zur Laufzeit erkannt werden und die aktuell installierte Constraint-Handler -Funktion aufrufen:
  • src oder dest ist ein Nullzeiger
  • destsz oder count ist größer als RSIZE_MAX / sizeof ( wchar_t )
  • count ist größer als destsz (Überlauf würde auftreten)
Wie bei allen bounds-checked-Funktionen ist wmemcpy_s nur garantiert verfügbar, wenn __STDC_LIB_EXT1__ durch die Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ auf den Integer-Konstantenwert 1 setzt, bevor <wchar.h> eingebunden wird.

Inhaltsverzeichnis

Parameter

dest - Zeiger auf das Breitzeichen-Array, in das kopiert werden soll
src - Zeiger auf das Breitzeichen-Array, aus dem kopiert werden soll
destsz - maximale Anzahl an Breitzeichen zum Schreiben (die Größe des Zielpuffers)
count - Anzahl der zu kopierenden Breitzeichen

Rückgabewert

1) Gibt eine Kopie von dest zurück
2) Gibt bei Erfolg Null zurück, gibt bei Fehler einen Wert ungleich Null zurück. Füllt im Fehlerfall den gesamten dst bis ausschließlich dst + dstsz mit Null-Weitzeichen, L ' \0 ' (sofern nicht dest null ist oder destsz größer ist als RSIZE_MAX / sizeof ( wchar_t ) )

Hinweise

Diese Funktion ist nicht gebietsschemassensitiv und beachtet nicht die Werte der wchar_t Objekte, die sie kopiert: Nullzeichen sowie ungültige Zeichen werden ebenfalls kopiert.

Beispiel

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

Ausgabe:

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

Referenzen

  • C23 Standard (ISO/IEC 9899:2024):
  • 7.29.4.2.4 Die wmemmove-Funktion (S.: TBD)
  • K.3.9.2.1.4 Die wmemmove_s-Funktion (S.: TBD)
  • C17 Standard (ISO/IEC 9899:2018):
  • 7.29.4.2.4 Die wmemmove-Funktion (S.: TBD)
  • K.3.9.2.1.4 Die wmemmove_s-Funktion (S.: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.29.4.2.4 Die wmemmove-Funktion (S: 432)
  • K.3.9.2.1.4 Die wmemmove_s-Funktion (S: 642)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.24.4.2.4 Die wmemmove-Funktion (S: 378)

Siehe auch

verschiebt einen Puffer zu einem anderen
(Funktion)
kopiert eine bestimmte Anzahl von Breitzeichen zwischen zwei nicht überlappenden Arrays
(Funktion)
C++-Dokumentation für wmemmove