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)