| strcpy(3) | Library Functions Manual | strcpy(3) |
NAME¶
strcpy, strcat - copy or catenate a string
LIBRARY¶
Standard C library (libc, -lc)
SYNOPSIS¶
#include <string.h>
char *strcpy(char *restrict dst, const char *restrict src); char *strcat(char *restrict dst, const char *restrict src);
DESCRIPTION¶
- strcpy()
- This function copies the string pointed to by src, into a string at the buffer pointed to by dst. The programmer is responsible for allocating a destination buffer large enough, that is, strlen(src) + 1.
- It is equivalent to
-
stpcpy(dst, src), dst
- strcat()
- This function catenates the string pointed to by src, after the string pointed to by dst (overwriting its terminating null byte). The programmer is responsible for allocating a destination buffer large enough, that is, strlen(dst) + strlen(src) + 1.
- It is equivalent to
-
stpcpy(strnul(dst), src), dst
RETURN VALUE¶
These functions return dst.
ATTRIBUTES¶
For an explanation of the terms used in this section, see attributes(7).
| Interface | Attribute | Value |
| strcpy (), strcat () | Thread safety | MT-Safe |
STANDARDS¶
C11, POSIX.1-2008.
HISTORY¶
POSIX.1-2001, C89, SVr4, 4.3BSD.
CAVEATS¶
The strings src and dst may not overlap.
If the destination buffer is not large enough, the behavior is undefined. See _FORTIFY_SOURCE in feature_test_macros(7).
strcat() can be very inefficient. Read about Shlemiel the painter.
EXAMPLES¶
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(void)
{
char *buf1;
size_t len, size;
size = strlen("Hello ") + strlen("world") + strlen("!") + 1;
buf1 = malloc(sizeof(*buf1) * size);
if (buf1 == NULL)
err(EXIT_FAILURE, "malloc()");
strcpy(buf1, "Hello ");
strcat(buf1, "world");
strcat(buf1, "!");
len = strlen(buf1);
printf("[len = %zu]: ", len);
puts(buf1); // "Hello world!"
free(buf1);
exit(EXIT_SUCCESS);
}
SEE ALSO¶
stpcpy(3), strdup(3), string(3), wcscpy(3), string_copying(7)
| 2026-02-25 | Linux man-pages (unreleased) |