Copy a string
Prototypes
#include <string.h> char *strcpy(char *dest, char *src); char *strncpy(char *dest, char *src, size_t n);
Description
These functions copy a string from one address to another, stopping at the NUL terminator on the srcstring.
strncpy() is just like strcpy(), except only the first n characters are actually copied. Beware that if you hit the limit, n before you get a NUL terminator on the src string, your dest string won’t be NUL-terminated. Beware! BEWARE!
(If the src string has fewer than n characters, it works just like strcpy().)
You can terminate the string yourself by sticking the '\0' in there yourself:
char s[10]; char foo = "My hovercraft is full of eels."; // more than 10 chars strncpy(s, foo, 9); // only copy 9 chars into positions 0-8 s[9] = '\0'; // position 9 gets the terminator
Return Value
Both functions return dest for your convenience, at no extra charge.
Example
char *src = "hockey hockey hockey hockey hockey hockey hockey hockey"; char dest[20]; int len; strcpy(dest, "I like "); // dest is now "I like " len = strlen(dest); // tricky, but let's use some pointer arithmetic and math to append // as much of src as possible onto the end of dest, -1 on the length to // leave room for the terminator: strncpy(dest+len, src, sizeof(dest)-len-1); // remember that sizeof() returns the size of the array in bytes // and a char is a byte: dest[sizeof(dest)-1] = '\0'; // terminate // dest is now: v null terminator // I like hockey hocke // 01234567890123456789012345
See Also
Source: strcpy(), strncpy()
strcpy(), strncpy() was last modified: July 13th, 2017 by