stpcpy(3) Library Functions Manual stpcpy(3) NAME stpcpy - string return-offset-pointer copy LIBRARY Standard C library (libc, -lc) SYNOPSIS #include char *stpcpy(char *restrict dst, const char *restrict src); Feature Test Macro Requirements for glibc (see feature_test_macros(7)): stpcpy(): Since glibc 2.10: _POSIX_C_SOURCE >= 200809L Before glibc 2.10: _GNU_SOURCE DESCRIPTION stpcpy() is similar to strcpy(3), but returns a pointer to the terminating null byte in dst. It is equivalent to all of the following expressions: memset(mempcpy(dst, src, strlen(src)), '\0', 1); strcpy(mempcpy(dst, src, strlen(src)), ""); strcpy(dst, src) + strlen(src) RETURN VALUE This function returns a pointer to the terminating null byte of the copied string. ATTRIBUTES For an explanation of the terms used in this section, see attributes(7). +--------------------------------------------+---------------+---------+ |Interface | Attribute | Value | +--------------------------------------------+---------------+---------+ |stpcpy () | Thread safety | MT-Safe | +--------------------------------------------+---------------+---------+ STANDARDS POSIX.1-2008. HISTORY POSIX.1-2008. EXAMPLES #include #include #include #include int main(void) { char *p; 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()"); p = buf1; p = stpcpy(p, "Hello "); p = stpcpy(p, "world"); p = stpcpy(p, "!"); len = p - buf1; printf("[len = %zu]: ", len); puts(buf1); // "Hello world!" free(buf1); exit(EXIT_SUCCESS); } SEE ALSO strcpy(3), string(3), wcpcpy(3), string_copying(7) Linux man-pages 6.19 2026-08-10 stpcpy(3)