我想尝试 C memcpy 功能。我有这段代码:
char destination[40];
memcpy(destination, "My favorite destination is...", 11);
printf(destination);
我想将前11个字母复制到目标数组。当我使用printf时,结果是“我最喜欢的2”。为什么呢?
答案 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...");