char
*
strcat(
char * restrict s
, const char * restrict append
)
char
*
strncat(
char * restrict s
, const char * restrict append
, size_t count
)
)
and
strncat(
)
functions
append a copy of the nul-terminated string
append
to the end of the nul-terminated string
s
,
then add a terminating
`\0'.
The string
s
must have sufficient space to hold the result.
The
strncat()
function
appends not more than
count
characters where space for the terminating
`\0'
should not be included in
count
.
)
and
strncat(
)
functions
return the pointer
s
.
abc
''
to
``
chararray
'':
char *letters = "abcdefghi";
(void)strncat(chararray, letters, 3);
The following example shows how to use
strncat()
safely in conjunction with
strncpy(3).
char buf[BUFSIZ];
char *input, *suffix;
(void)strncpy(buf, input, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';
(void)strncat(buf, suffix, sizeof(buf) - 1 - strlen(buf));
The above will copy as many characters from
``input
''
to
``buf
''
as will fit.
It then appends as many characters from suffix as will fit (or none
if there is no space).
For operations like this, the
strlcpy(3)
and
strlcat(3)
functions are a better choice, as shown below.
(void)strlcpy(buf, input, sizeof(buf));
(void)strlcat(buf, suffix, sizeof(buf));
)
and
strncat(
)
functions
conform to
ISO/IEC 9899:1999 (``ISO C99'') .