Namensräume
Varianten
Aktionen

wcscpy, wcscpy_s

Von cppreference.com
< 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 den von src zeigenden Wide-String (einschließlich des abschließenden Null-Wide-Zeichens) in das Wide-Zeichen-Array, auf das dest zeigt. Das Verhalten ist undefiniert, wenn das dest-Array nicht groß genug ist. Das Verhalten ist undefiniert, wenn sich die Strings überlappen.
2) Wie (1), außer dass der Rest des Ziel-Arrays mit nicht spezifizierten Werten überschrieben werden kann und dass die folgenden Fehler zur Laufzeit erkannt werden und die aktuell installierte Constraint-Handler-Funktion aufrufen.
  • src oder dest ist ein Null-Zeiger
  • destsz ist Null oder größer als RSIZE_MAX / sizeof(wchar_t)
  • destsz ist kleiner oder gleich wcsnlen_s(src, destsz), mit anderen Worten, eine Trunkierung würde auftreten
  • Es würde eine Überschneidung zwischen der Quell- und der Zielzeichenkette auftreten
Wie bei allen grenzgeprüften Funktionen ist wcscpy_s nur garantiert verfügbar, wenn __STDC_LIB_EXT1__ von der Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ auf die ganzzahlige Konstante 1 definiert, bevor <wchar.h> eingebunden wird.

Inhalt

[bearbeiten] Parameter

dest - Zeiger auf das Wide-Zeichen-Array, in das kopiert werden soll
src - Zeiger auf den nullterminierten Wide-String, von dem kopiert werden soll
destsz - maximale Anzahl von zu schreibenden Zeichen, typischerweise die Größe des Zielpuffers

[bearbeiten] Rückgabewert

1) gibt eine Kopie von dest zurück
2) gibt Null bei Erfolg zurück, gibt einen Wert ungleich Null bei einem Fehler zurück. Bei einem Fehler wird außerdem L'\0' nach dest[0] geschrieben (es sei denn, dest ist ein Null-Zeiger oder destsz ist Null oder größer als RMAX_SIZE / sizeof(wchar_t)).

[bearbeiten] 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

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

kopiert eine bestimmte Anzahl breiter Zeichen von einer Zeichenkette in eine andere
(Funktion) [bearbeiten]
kopiert eine bestimmte Anzahl breiter Zeichen zwischen zwei nicht überlappenden Arrays
(Funktion) [bearbeiten]
kopiert einen String in einen anderen
(Funktion) [bearbeiten]
C++ Dokumentation für wcscpy