wcsncat, wcsncat_s
Von cppreference.com
| Definiert in Header <wchar.h> |
||
| (1) | ||
| wchar_t *wcsncat( wchar_t *dest, const wchar_t *src, size_t count ); |
(seit C95) (bis C99) |
|
| wchar_t *wcsncat( wchar_t *restrict dest, const wchar_t *restrict src, size_t count ); |
(seit C99) | |
| errno_t wcsncat_s( wchar_t *restrict dest, rsize_t destsz, const wchar_t *restrict src, rsize_t count ); |
(2) | (seit C11) |
1) Hängt höchstens
count Zeichen aus der durch src zeigenden Wide-String-Zeichenkette an das Ende der durch dest zeigenden Zeichenkette an, wobei die Funktion anhält, wenn das Nullzeichen kopiert wird. Das Wide-Zeichen src[0] ersetzt das Nullzeichen am Ende von dest. Das Nullzeichen wird immer am Ende angehängt (die maximale Anzahl von Zeichen, die die Funktion schreiben kann, ist also count+1). Das Verhalten ist undefiniert, wenn das Ziel-Array nicht groß genug für den Inhalt von sowohl
str als auch dest und das abschließende Nullzeichen ist. Das Verhalten ist undefiniert, wenn sich die Zeichenketten überlappen.
2) Wie (1), außer dass diese Funktion den Rest des Zielarrays überschreiben kann (vom letzten geschriebenen Zeichen bis zu
destsz) und die folgenden Fehler zur Laufzeit erkannt werden und die aktuell installierte Constraint-Handler-Funktion aufrufen:-
srcoderdestist ein Nullzeiger -
destszodercountist Null oder größer als RSIZE_MAX/sizeof(wchar_t) - kein Nullzeichen innerhalb der ersten
destszZeichen vondestvorhanden ist - eine Abschneidung auftreten würde:
countoder die Länge vonsrc, je nachdem, welcher Wert kleiner ist, überschreitet den verfügbaren Platz zwischen dem Nullzeichen vondestunddestsz. - Es würde eine Überschneidung zwischen der Quell- und der Zielzeichenkette auftreten
-
- Wie bei allen grenzgeprüften Funktionen ist
wcsncat_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 setzt, bevor <wchar.h> eingebunden wird.
Inhalt |
[bearbeiten] Parameter
| dest | - | Zeiger auf den nullterminierten Wide-String, an den angehängt werden soll |
| src | - | Zeiger auf den nullterminierten Wide-String, von dem kopiert werden soll |
| zählt | - | maximale Anzahl von zu kopierenden Zeichen |
| destsz | - | die Größe des Zielpuffers |
[bearbeiten] Rückgabewert
1) Gibt eine Kopie von
dest zurück2) gibt Null bei Erfolg zurück, gibt einen Nicht-Null-Wert bei einem Fehler zurück. Bei einem Fehler wird außerdem L'\0' nach dest[0] geschrieben (es sei denn,
dest ist ein Nullzeiger oder destsz ist Null oder größer als RSIZE_MAX/sizeof(wchar_t)).[bearbeiten] Hinweise
Obwohl die Abschneidung zur Anpassung an den Zielpuffer ein Sicherheitsrisiko darstellt und daher eine Laufzeitbeschränkungsverletzung für wcsncat_s ist, kann das Abschneidungsverhalten erreicht werden, indem count gleich der Größe des Zielarrays minus eins angegeben wird: Es werden die ersten count Zeichen kopiert und wie immer das Nullzeichen angehängt: wcsncat_s(dst, sizeof dst/sizeof *dst, src, (sizeof dst/sizeof *dst)-wcsnlen_s(dst, sizeof dst/sizeof *dst)-1);
[bearbeiten] Beispiel
Führen Sie diesen Code aus
Mögliche Ausgabe
Земля, прощай. В добрый
[bearbeiten] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 7.29.4.3.2 Die Funktion wcsncat (S. 315)
- K.3.9.2.2.2 Die Funktion wcsncat_s (S. 466-467)
- C11-Standard (ISO/IEC 9899:2011)
- 7.29.4.3.2 Die Funktion wcsncat (S. 432-433)
- K.3.9.2.2.2 Die Funktion wcsncat_s (S. 643-644)
- C99-Standard (ISO/IEC 9899:1999)
- 7.24.4.3.2 Die Funktion wcsncat (S. 378-379)
[bearbeiten] Siehe auch
| (C95)(C11) |
hängt eine Kopie einer breiten Zeichenkette an eine andere an (Funktion) |
| (C11) |
verbindet eine bestimmte Anzahl von Zeichen von zwei Strings (Funktion) |
| (C95)(C11) |
kopiert eine breite Zeichenkette in eine andere (Funktion) |
| C++ Dokumentation für wcsncat
| |