参考http://www.cplusplus.com/reference/clibrary/cstring/strncpy/
char * strncpy ( char * destination, const char * source, size_t num );
该函数相比strcpy来说是比较安全的,但是要注意,该函数默认是不会自动附加null终止符的。
说明如下:
1,当source的长度小于num,此时strncpy会在copy整个source,再填充0(也就是null终止符),以便凑够num个字符
2,当source的长度等于num,此时strncpy正好copy整个source,不会附加0
3,当source的长度大于num,此时strncpy会copy source的前num字符,也不会附加0
这样对于strncpy,最安全的方式就是执行strncpy之后再附加0。
附加示例:
/* strncpy example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[]= "12345";
char str1[]= "123456";
char str2[6];
strncpy (str2,str,5);
str2[5]='\0';
puts (str2);
return 0;
}