OpenBSD manual page server

Manual Page Search Parameters

STRCPY(3) Library Functions Manual STRCPY(3)

strcpy, strncpycopy strings

#include <string.h>

char *
strcpy(char *dst, const char *src);

char *
strncpy(char *dst, const char *src, size_t len);

The () and strncpy() functions copy the string src to dst (including the terminating ‘\0’ character).

The () function copies not more than len characters into dst, appending ‘\0’ characters if src is less than len characters long, and not terminating dst if the length of src is greater than or equal to len.

The strcpy() and strncpy() functions return dst.

The following sets chararray to “abc\0\0\0”:

(void)strncpy(chararray, "abc", 6);

The following sets chararray to “abcdef” and does not NUL terminate chararray because the length of the source string is greater than or equal to the length parameter. strncpy() NUL terminates the destination string when the length of the source string is less than the length parameter.

(void)strncpy(chararray, "abcdefgh", 6);

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, it must be done by hand.

char buf[BUFSIZ];

(void)strncpy(buf, input, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';

Note that strlcpy(3) is a better choice for this kind of operation. The equivalent using strlcpy(3) is simply:

(void)strlcpy(buf, input, sizeof(buf));

bcopy(3), memccpy(3), memcpy(3), memmove(3), strcat(3), strlcpy(3), wcscpy(3), wcslcpy(3)

The strcpy() and strncpy() functions conform to ANSI X3.159-1989 (“ANSI C89”).

The strcpy() function first appeared in the Programmer's Workbench (PWB/UNIX) and was ported to Version 7 AT&T UNIX; strncpy() first appeared in Version 7 AT&T UNIX.

July 17, 2013 OpenBSD-5.4