Main index | Section 3 | Options |
#include <string.h>
The strncpy() and stpncpy() functions copy at most len characters from src into dst. If src is less than len characters long, the remainder of dst is filled with ‘\0’ characters. Otherwise, dst is not terminated.
For all of strcpy(), strncpy(), stpcpy(), and stpncpy(), the result is undefined if src and dst overlap.
char chararray[6];(void)strncpy(chararray, "abc", sizeof(chararray));
The following sets chararray to "abcdef":
char chararray[6];(void)strncpy(chararray, "abcdefgh", sizeof(chararray));
Note that it does not NUL terminate chararray because the length of the source string is greater than or equal to the length argument.
The following copies as many characters from input to buf as will fit and NUL terminates the result. Because strncpy() does not guarantee to NUL terminate the string itself, this must be done explicitly.
char buf[1024];(void)strncpy(buf, input, sizeof(buf) - 1); buf[sizeof(buf) - 1] = '\0';
This could be better achieved using strlcpy(3), as shown in the following example:
(void)strlcpy(buf, input, sizeof(buf));
It is strongly suggested that the strlcpy() function be used in almost all cases.
For some, but not all, fixed-length records, non-terminated strings may be both valid and desirable. In that specific case, the strncpy() function may be most sensible.
STRCPY (3) | June 6, 2018 |
Main index | Section 3 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
“ | If you have any trouble sounding condescending, find a Unix user to show you how it's done. | ” |
— Scott Adams |