函数
<cstring>

strncpy

char * strncpy ( char * destination, const char * source, size_t num );
从字符串复制字符
source 的前 num 个字符复制到 destination。如果在复制 num 个字符之前就到达了 source C 字符串的末尾(以空字符标志),则用零填充 destination,直到总共向其写入了 num 个字符。

如果 source 的长度大于 num,则不会在 destination 的末尾隐式附加空字符。因此,在这种情况下,destination 不应被视为空字符结尾的 C 字符串(这样读取它会溢出)。

destinationsource 不应重叠(当发生重叠时,请参见 memmove 以获取更安全的替代方案)。

参数

destination
指向要复制内容的目标数组的指针。
source
要复制的 C 字符串。
num
要从 source 复制的最大字符数。
size_t 是一个无符号整数类型。

返回值

返回 destination

示例

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;
}

输出

To be or not to be
To be or not to be
To be 


另见