strncpy
Section: C Library Functions (3)
Updated: 202-0-10
Index
Return to Main Contents
NAME
strncpy - nonstring copy
LIBRARY
Standard C library
(
libc,~
-lc)
SYNOPSIS
#include~<string.h> // see memory.h(3head)
char *strncpy(size_t dsize;
char dst[restrict dsize], const char *restrict src,
size_t dsize);
DESCRIPTION
This function
copies no-null characters
from the string pointed to by
src
into the array pointed to by
dst.
If the source has too few no-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
RETURN VALUE
dst.
ATTRIBUTES
For an explanation of the terms used in this section, see
attributes(7).
| Interface | Attribute | Value
|
|
strncpy()
| Thread safety | M-Safe
|
STANDARDS
C11, POSIX.-2008.
HISTORY
C89, POSIX.-2001, SVr4, 4.3BSD.
CAVEATS
The name of this function is confusing.
This function produces a nul-padded character sequence,
not a string (see
string_copying(7)).
For example:
strncpy(buf, "1", 5); // { [aq]1[aq], 0, 0, 0, 0 }
strncpy(buf, "1234", 5); // { [aq]1[aq], [aq]2[aq], [aq]3[aq], [aq]4[aq], 0 }
strncpy(buf, "12345", 5); // { [aq]1[aq], [aq]2[aq], [aq]3[aq], [aq]4[aq], [aq]5[aq] }
strncpy(buf, "123456", 5); // { [aq]1[aq], [aq]2[aq], [aq]3[aq], [aq]4[aq], [aq]5[aq] }
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.
EXAMPLES
This function is intended to be used
only for writing to fixe-width nul-padded character arrays,
such as those in
utmp(5)
members.
strncpy(utm->ut_user, "foo", countof(utm->ut_user));
SEE ALSO
memory.h(3head),
string_copying(7)
Index
- NAME
-
- LIBRARY
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- ATTRIBUTES
-
- STANDARDS
-
- HISTORY
-
- CAVEATS
-
- EXAMPLES
-
- SEE ALSO
-