.\" Copyright (c) Bruno Haible <haible@clisp.cons.org>
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_ONEPARA)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\" %%%LICENSE_END
.\"
.\" References consulted:
.\"   GNU glibc-2 source code and manual
.\"
.\" Corrected, aeb, 990824
.TH STPNCPY 3  2016-03-15 "GNU" "Linux Programmer's Manual"
.SH NAME
stpncpy \- copy a fixed-size string, returning a pointer to its end
.SH SYNOPSIS
.nf
.B #include <string.h>
.sp
.BI "char *stpncpy(char *" dest ", const char *" src ", size_t " n );
.fi
.sp
.in -4n
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.in
.sp
.BR stpncpy ():
.PD 0
.ad l
.RS 4
.TP 4
Since glibc 2.10:
_POSIX_C_SOURCE\ >=\ 200809L
.TP
Before glibc 2.10:
_GNU_SOURCE
.RE
.ad
.PD
.SH DESCRIPTION
The
.BR stpncpy ()
function copies at most
.I n
characters from the string
pointed to by
.IR src ,
including the terminating null byte (\(aq\\0\(aq),
to the array pointed to by
.IR dest .
Exactly
.I n
characters are written at
.IR dest .
If the length
.I strlen(src)
is smaller than
.IR n ,
the
remaining characters in the array pointed to by
.I dest
are filled
with null bytes (\(aq\\0\(aq),
If the length
.I strlen(src)
is greater than or equal to
.IR n ,
the string pointed to by
.I dest
will
not be null-terminated.
.PP
The strings may not overlap.
.PP
The programmer must ensure that there is room for at least
.I n
characters
at
.IR dest .
.SH RETURN VALUE
.BR stpncpy ()
returns a pointer to the terminating null byte
in
.IR dest ,
or, if
.I dest
is not null-terminated,
.IR dest + n .
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lb lb lb
l l l.
Interface	Attribute	Value
T{
.BR stpncpy ()
T}	Thread safety	MT-Safe
.TE
.SH CONFORMING TO
This function was added to POSIX.1-2008.
Before that, it was a GNU extension.
It first appeared in version 1.07 of the GNU C library in 1993.
.SH SEE ALSO
.BR strncpy (3),
.BR wcpncpy (3)
