August 11, 2002 STRCAT 3

### NAME

strcat, strncat - concatenate strings

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```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'') .