.\" 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  2021-03-22 "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>
.PP
.BI "char *stpncpy(char *restrict " dest ", const char *restrict " src \
", size_t " n );
.fi
.PP
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.PP
.BR stpncpy ():
.nf
    Since glibc 2.10:
        _POSIX_C_SOURCE >= 200809L
    Before glibc 2.10:
        _GNU_SOURCE
.fi
.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\e0\(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\e0\(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).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR stpncpy ()
T}	Thread safety	MT-Safe
.TE
.hy
.ad
.sp 1
.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)
