NAME
strcpy
, strncpy
— copy strings
SYNOPSIS
#include
<string.h>
char *
strcpy
(char
*dst, const char
*src);
char *
strncpy
(char
*dst, const char
*src, size_t
len);
DESCRIPTION
The
strcpy
()
and strncpy
() functions copy the string
src to dst (including the
terminating ‘\0
’ character).
The
strncpy
()
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.
RETURN VALUES
The strcpy
() and
strncpy
() functions return
dst.
EXAMPLES
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
()
only 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));
SEE ALSO
bcopy(3), memccpy(3), memcpy(3), memmove(3), strcat(3), strlcpy(3), wcscpy(3), wcslcpy(3)
STANDARDS
The strcpy
() and
strncpy
() functions conform to ANSI
X3.159-1989 (“ANSI C89”).
HISTORY
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.