Namespaces
Variants

wcscpy, wcscpy_s

From cppreference.net
< c ‎ | string ‎ | wide
Definiert in Header <wchar.h>
(1)
wchar_t * wcscpy ( wchar_t * dest, const wchar_t * src ) ;
(seit C95)
(bis C99)
wchar_t * wcscpy ( wchar_t * restrict dest, const wchar_t * restrict src ) ;
(seit C99)
errno_t wcscpy_s ( wchar_t * restrict dest, rsize_t destsz,
const wchar_t * restrict src ) ;
(2) (seit C11)
1) Kopiert die breite Zeichenkette, auf die src zeigt (einschließlich des abschließenden Null-Breitzeichens), in das Breitzeichen-Array, auf das dest zeigt. Das Verhalten ist undefiniert, wenn das dest -Array nicht groß genug ist. Das Verhalten ist undefiniert, wenn sich die Zeichenketten überlappen.
2) Gleich wie (1) , außer dass es den Rest des Zielarrays mit nicht spezifizierten Werten überschreiben kann und dass die folgenden Fehler zur Laufzeit erkannt werden und die aktuell installierte Constraint-Handler -Funktion aufrufen:
  • src oder dest ist ein Nullzeiger
  • destsz ist Null oder größer als RSIZE_MAX / sizeof ( wchar_t )
  • destsz ist kleiner oder gleich wcsnlen_s ( src, destsz ) , mit anderen Worten, es würde ein Abschneiden auftreten
  • Überlappung zwischen Quell- und Zielzeichenfolge würde auftreten
Wie bei allen grenzgeprüften Funktionen ist wcscpy_s nur garantiert verfügbar, wenn __STDC_LIB_EXT1__ durch die Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ auf die Integer-Konstante 1 setzt, bevor <wchar.h> eingebunden wird.

Inhaltsverzeichnis

Parameter

dest - Zeiger auf das Breitzeichen-Array, in das kopiert werden soll
src - Zeiger auf die nullterminierte Breitzeichen-Zeichenkette, aus der kopiert werden soll
destsz - maximale Anzahl der zu schreibenden Zeichen, typischerweise die Größe des Zielpuffers

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. Außerdem wird bei Fehler L ' \0 ' in dest [ 0 ] geschrieben (sofern dest kein Nullzeiger ist oder destsz nicht Null oder größer als RMAX_SIZE / sizeof ( wchar_t ) ist).

Beispiel

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

Ausgabe:

src = 犬 means dog
dst = 狗 means dog

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.29.4.1.2 Die wcscpy-Funktion (S.: TBD)
  • K.3.9.2.1.1 Die wcscpy_s-Funktion (S.: TBD)
  • C17 Standard (ISO/IEC 9899:2018):
  • 7.29.4.1.2 Die wcscpy-Funktion (S.: TBD)
  • K.3.9.2.1.1 Die wcscpy_s-Funktion (S.: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.29.4.1.2 Die wcscpy-Funktion (S: 430)
  • K.3.9.2.1.1 Die wcscpy_s-Funktion (S: 639)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.24.4.1.2 Die wcscpy-Funktion (S: 376)

Siehe auch

kopiert eine bestimmte Anzahl von Breitzeichen von einer Zeichenkette in eine andere
(Funktion)
kopiert eine bestimmte Anzahl von Breitzeichen zwischen zwei nicht überlappenden Arrays
(Funktion)
kopiert eine Zeichenkette in eine andere
(Funktion)