function
<cstring>
strncpy
char * strncpy ( char * destination, const char * source, size_t num );
Copy characters from string
Copies the first num characters of source to destination. If the end of the source C string (which is signaled by a null-character) is found before num characters have been copied, destination is padded with zeros until a total of num characters have been written to it.
No null-character is implicitly appended at the end of destination if source is longer than num. Thus, in this case, destination shall not be considered a null terminated C string (reading it as such would overflow).
destination and source shall not overlap (see memmove for a safer alternative when overlapping).
Parameters
- destination
- Pointer to the destination array where the content is to be copied.
- source
- C string to be copied.
- num
- Maximum number of characters to be copied from source.
size_t is an unsigned integral type.
Return Value
destination is returned.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
/* strncpy example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "To be or not to be";
char str2[40];
char str3[40];
/* copy to sized buffer (overflow safe): */
strncpy ( str2, str1, sizeof(str2) );
/* partial copy (only 5 chars): */
strncpy ( str3, str2, 5 );
str3[5] = '\0'; /* null character manually added */
puts (str1);
puts (str2);
puts (str3);
return 0;
}
|
Output:
To be or not to be
To be or not to be
To be
|
See also
- strcpy
- Copy string (function)
- memcpy
- Copy block of memory (function)
- memmove
- Move block of memory (function)
- memchr
- Locate character in block of memory (function)
- memcmp
- Compare two blocks of memory (function)
- memset
- Fill block of memory (function)