wcscpy, wcscpy_s
From cppreference.net
|
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_snur 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
Diesen Code ausführen
#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
|
(C95)
(C11)
|
kopiert eine bestimmte Anzahl von Breitzeichen von einer Zeichenkette in eine andere
(Funktion) |
|
(C95)
(C11)
|
kopiert eine bestimmte Anzahl von Breitzeichen zwischen zwei nicht überlappenden Arrays
(Funktion) |
|
(C11)
|
kopiert eine Zeichenkette in eine andere
(Funktion) |
|
C++-Dokumentation
für
wcscpy
|
|