wcscpy, wcscpy_s
Von cppreference.com
| 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_snur 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
Führen Sie diesen Code aus
#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
| (C95)(C11) |
kopiert eine bestimmte Anzahl breiter Zeichen von einer Zeichenkette in eine andere (Funktion) |
| (C95)(C11) |
kopiert eine bestimmte Anzahl breiter Zeichen zwischen zwei nicht überlappenden Arrays (Funktion) |
| (C11) |
kopiert einen String in einen anderen (Funktion) |
| C++ Dokumentation für wcscpy
| |