wcscpy, wcscpy_s
Von de.cppreference.net
| Definiert in Header <wchar.h>
|
||
wchar_t* wcscpy( wchar_t* dest, const wchar_t* src );
|
(1) | (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 überschneiden.2) Wie (1), außer dass der Rest des Zielarrays mit unspezifizierten Werten überschrieben werden kann und dass die folgenden Fehler zur Laufzeit erkannt werden und die derzeit installierte Einschränkungshandler-Funktion aufrufen:
srcoderdestist ein Nullzeigerdestszist null oder größer alsRSIZE_MAX / sizeof(wchar_t)destszist kleiner oder gleichwcsnlen_s(src, destsz), mit anderen Worten, es würde eine Kürzung auftreten- Es würde eine Überschneidung zwischen der Quell- und der Zielzeichenkette auftreten
- Wie bei allen grenzgeprüften Funktionen ist
wcscpy_snur dann garantiert verfügbar, wenn__STDC_LIB_EXT1__von der Implementierung definiert ist und der Benutzer__STDC_WANT_LIB_EXT1__als die ganzzahlige Konstante1definiert, bevor <wchar.h> eingebunden wird.
Parameter
| dest | - | Zeiger auf das Breitzeichen-Array, in das kopiert werden soll |
| src | - | Zeiger auf die nullterminierte breite Zeichenkette, von der kopiert werden soll |
| destsz | - | maximale Anzahl zu schreibender Zeichen, typischerweise die Größe des Zielpuffers |
Rückgabewert
1) gibt eine Kopie von
dest zurück2)
L'\0' gibt bei Erfolg Null zurück, bei Fehler einen Wert ungleich Null. Bei einem Fehler wird außerdem dest[0] in dest geschrieben (es sei denn, destsz ist ein Nullzeiger oder RMAX_SIZE / sizeof(wchar_t) ist null oder größer als ).
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);
}
Diesen Code ausführen
src = 犬 means dog
dst = 狗 means dog
Ausgabe:
- Referenzen
- C23-Standard (ISO/IEC 9899:2024):
- 7.31.4.2.1 Die wcscpy-Funktion (S. 438)
- K.3.9.3.1.1 Die wcscpy_s-Funktion (S. 663)
- 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)
wcsncpy_s(C95) |
(C11) kopiert eine bestimmte Anzahl von Breitzeichen von einer Zeichenkette in eine andere |
wmemcpy_s(C95) |
(C11) kopiert eine bestimmte Anzahl von Breitzeichen zwischen zwei nicht überlappenden Arrays |
strcpy_s |
(C11) kopiert eine Zeichenkette in eine andere |
(Funktion)C++-Dokumentation für
| |