|
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ATTRIBUTES | STANDARDS | HISTORY | CAVEATS | EXAMPLES | SEE ALSO | COLOPHON |
|
|
|
strncpy(3) Library Functions Manual strncpy(3)
strncpy - nonstring copy
Standard C library (libc, -lc)
#include <string.h> // see memory.h(3head)
char *strncpy(size_t dsize;
char dst[restrict dsize], const char *restrict src,
size_t dsize);
This function copies non-null characters from the string pointed
to by src into the array pointed to by dst. If the source has too
few non-null bytes to fill the destination, it pads the
destination with trailing null bytes. If the destination buffer,
limited by its size, isn't large enough to hold the copy, the
resulting character sequence is truncated.
It is equivalent to
stpncpy(dst, src, dsize), dst
dst.
For an explanation of the terms used in this section, see
attributes(7).
┌──────────────────────────────────────┬───────────────┬─────────┐
│ Interface │ Attribute │ Value │
├──────────────────────────────────────┼───────────────┼─────────┤
│ strncpy() │ Thread safety │ MT-Safe │
└──────────────────────────────────────┴───────────────┴─────────┘
C11, POSIX.1-2008.
C89, POSIX.1-2001, SVr4, 4.3BSD.
The name of this function is confusing. This function produces a
null-padded character sequence, not a string (see
string_copying(7)). For example:
strncpy(buf, "1", 5); // { '1', 0, 0, 0, 0 }
strncpy(buf, "1234", 5); // { '1', '2', '3', '4', 0 }
strncpy(buf, "12345", 5); // { '1', '2', '3', '4', '5' }
strncpy(buf, "123456", 5); // { '1', '2', '3', '4', '5' }
It's impossible to distinguish truncation by the result of the
call, from a character sequence that just fits the destination
buffer; truncation should be detected by comparing the length of
the input string with the size of the destination buffer.
This function is intended to be used only for writing to fixed-
width null-padded character arrays, such as those in utmp(5)
members.
strncpy(utmp->ut_user, "foo", countof(utmp->ut_user));
memory.h(3head), string_copying(7)
This page is part of the man-pages (Linux kernel and C library
user-space interface documentation) project. Information about
the project can be found at
⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report
for this manual page, see
⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
This page was obtained from the tarball man-pages-6.19.tar.gz
fetched from
⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
2026-09-09. If you discover any rendering problems in this HTML
version of the page, or you believe there is a better or more up-
to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not
part of the original manual page), send a mail to
man-pages@man7.org
Linux man-pages 6.19 2026-08-10 strncpy(3)
Pages that refer to this page: bcopy(3), memory.h(3head), pmstrncat(3), pmstrncpy(3), stpncpy(3), strncat(3), wcsncpy(3), feature_test_macros(7), signal-safety(7), string_copying(7)