- 与strcpy相比,memcpy并不是遇到’\0’就结束,而是一定会拷贝完n个字节
- strncpy和memcpy 没有自动加上终止符的,需要手动加上不然会出问题的
实验
char s1[8] = "abcd\0as";
char s2[10] = "leonardo1";
strcpy(s2, s1);
cout << s2 << endl; // 输出abcd, s2 = "abcd\0rdo1\0"
char s1[8] = "abcd\0as";
char s2[10] = "leonardo1";
memcpy(s2, s1, 8);
cout << s2 << endl; // 输出abcd, s2 = "abcd\0as\01\0"
char s1[8] = "abcd\0as";
char s2[10] = "leonardo1";
strncpy(s2, s1, 8);
cout << s2 << endl; // 输出abcd, s2 = "abcd\0\0\0\01\0"
char s1[8] = "abcd\0as";
char s2[10] = "leonardo1";
strncpy_s(s2, 8, s1, 8);
cout << s2 << endl; // 输出abcd, s2 = "abcd\0???1\0"
strncpy_s(s2, 10, s1, 8);
cout << s2 << endl; // 输出abcd, s2 = "abcd\0?????"
char s1[8] = "abcd\0as";
char s2[10] = "leonardo1";
strcpy_s(s2, 8, s1);
cout << s2 << endl; // 输出abcd, s2 = "abcd\0???1\0"