memcpy一个子串

时间:2011-11-25 20:28:14

标签: c substring memcpy

我想尝试 C memcpy 功能。我有这段代码:

char destination[40];
memcpy(destination, "My favorite destination is...", 11);
printf(destination);

我想将前11个字母复制到目标数组。当我使用printf时,结果是“我最喜欢的2”。为什么呢?

4 个答案:

答案 0 :(得分:10)

您缺少11个字符末尾的NULL终止符 - > Printf只是打印内存中的任何内容,直到找到NULL终止符。

只需添加目的地[11] = 0;

这应该有效:)

答案 1 :(得分:3)

这是因为memcpy不会以空字节终止字符串。您可以先用空值填充整个数组:

memset(destination, 0, sizeof destination);

答案 2 :(得分:3)

C字符串必须以null结尾。最简单的解决方案是首先将0复制到整个字符串中。

memset(destination, 0, sizeof(destination));

答案 3 :(得分:0)

printf("%.11s","My favorite destination is...");