Defined in header <wchar.h> | ||
---|---|---|
(1) | ||
wchar_t *wcsncat( wchar_t *dest, const wchar_t *src, size_t count ); | (since C95) (until C99) | |
wchar_t *wcsncat( wchar_t *restrict dest, const wchar_t *restrict src, size_t count ); | (since C99) | |
errno_t wcsncat_s( wchar_t *restrict dest, rsize_t destsz, const wchar_t *restrict src, rsize_t count ); | (2) | (since C11) |
count
wide characters from the wide string pointed to by src
, stopping if the null terminator is copied, to the end of the character string pointed to by dest
. The wide character src[0]
replaces the null terminator at the end of dest
. The null terminator is always appended in the end (so the maximum number of wide characters the function may write is count+1
).str
and dest
and the terminating null wide character.destsz
) and that the following errors are detected at runtime and call the currently installed constraint handler function: src
or dest
is a null pointer destsz
or count
is zero or greater than RSIZE_MAX/sizeof(wchar_t)
destsz
wide characters of dest
count
or the length of src
, whichever is less, exceeds the space available between the null terminator of dest
and destsz
. wcsncat_s
is only guaranteed to be available if __STDC_LIB_EXT1__
is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT1__
to the integer constant 1 before including wchar.h
.dest | - | pointer to the null-terminated wide string to append to |
src | - | pointer to the null-terminated wide string to copy from |
count | - | maximum number of wide characters to copy |
destsz | - | the size of the destination buffer |
dest
L'\0'
to dest[0]
(unless dest
is a null pointer or destsz
is zero or greater than RSIZE_MAX/sizeof(wchar_t)
).Although truncation to fit the destination buffer is a security risk and therefore a runtime constraints violation for wcsncat_s
, it is possible to get the truncating behavior by specifying count
equal to the size of the destination array minus one: it will copy the first count
wide characters and append the null terminator as always: wcsncat_s(dst, sizeof dst/sizeof *dst, src, (sizeof dst/sizeof *dst)-wcsnlen_s(dst, sizeof dst/sizeof *dst)-1);
#include <wchar.h> #include <stdio.h> #include <locale.h> int main(void) { wchar_t str[50] = L"Земля, прощай."; wcsncat(str, L" ", 1); wcsncat(str, L"В добрый путь.", 8); // only append the first 8 wide chars setlocale(LC_ALL, "en_US.utf8"); printf("%ls", str); }
Possible output:
Земля, прощай. В добрый
(C95)(C11) | appends a copy of one wide string to another (function) |
(C11) | concatenates a certain amount of characters of two strings (function) |
(C95)(C11) | copies one wide string to another (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/c/string/wide/wcsncat