.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
.\"
.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
.\" Distributed under GPL
.\" %%%LICENSE_END
.\"
.\" Heavily based on glibc infopages, copyright Free Software Foundation
.\"
.\" aeb, 2003, polished a little
.TH MEMPCPY 3 2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
mempcpy, wmempcpy  \- copy memory area
.SH SYNOPSIS
.nf
.BR "#define _GNU_SOURCE" "         /* See feature_test_macros(7) */"
.B #include <string.h>
.PP
.BI "void *mempcpy(void *restrict " dest ", const void *restrict " src \
", size_t " n );
.PP
.BR "#define _GNU_SOURCE" "         /* See feature_test_macros(7) */"
.B #include <wchar.h>
.PP
.BI "wchar_t *wmempcpy(wchar_t *restrict " dest \
", const wchar_t *restrict " src ,
.BI "                  size_t " n );
.fi
.SH DESCRIPTION
The
.BR mempcpy ()
function is nearly identical to the
.BR memcpy (3)
function.
It copies
.I n
bytes from the object beginning at
.I src
into the object pointed to by
.IR dest .
But instead of returning the value of
.I dest
it returns a pointer to the byte following the last written byte.
.PP
This function is useful in situations where a number of objects
shall be copied to consecutive memory positions.
.PP
The
.BR wmempcpy ()
function is identical but takes
.I wchar_t
type arguments and copies
.I n
wide characters.
.SH RETURN VALUE
.I dest
+
.IR n .
.SH VERSIONS
.BR mempcpy ()
first appeared in glibc in version 2.1.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR mempcpy (),
.BR wmempcpy ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
This function is a GNU extension.
.SH EXAMPLES
.EX
void *
combine(void *o1, size_t s1, void *o2, size_t s2)
{
    void *result = malloc(s1 + s2);
    if (result != NULL)
        mempcpy(mempcpy(result, o1, s1), o2, s2);
    return result;
}
.EE
.SH SEE ALSO
.BR memccpy (3),
.BR memcpy (3),
.BR memmove (3),
.BR wmemcpy (3)
