STRCAT(3)

STRCAT(3) | Library Functions Manual | STRCAT(3)

# NAME

`strcat`, `strncat` —
concatenate strings

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <string.h>`

char *
`strcat`(char * restrict s, const char * restrict append);

char *
`strncat`(char * restrict s, const char * restrict append, size_t count);

# DESCRIPTION

The `strcat`() 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.

# RETURN VALUES

The `strcat`() and `strncat`() functions return the pointer s.

# EXAMPLES

The following appends “`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));

# SEE ALSO

bcopy(3), memccpy(3), memcpy(3), memmove(3), strcpy(3), strlcat(3), strlcpy(3)

# STANDARDS

The `strcat`() and `strncat`() functions conform to ISO/IEC 9899:1999 (“ISO C99”).

August 11, 2002 | NetBSD 9.5