我在这里阅读了关于memmove的MSDN文章:
http://msdn.microsoft.com/en-us/library/aa246469%28v=vs.60%29.aspx
我无法从他们的例子中看出memmove与memcpy的区别。他们都给出了相同的结果,尽管这个例子是为了显示差异。请帮忙。
答案 0 :(得分:1)
这是一个扩展的评论而非答案。 MSDN示例很差,被两个相似的源字符串混淆了“快速的棕色狐狸跳过懒狗”和“快速的棕色狗跳过懒惰的狐狸”。当源和目标重叠时,我的MS Visual C使用memcpy()
给出了正确的结果,但正如@PaulRoub写的(现已删除),只是因为一个编译器正确编码并不意味着另一个将会。
#include <stdio.h>
#include <string.h>
int main()
{
char str [] = "abcdefghijklmnopqrstuvwxyz";
printf ("%s\n", str);
memcpy (str, str+1, 25); // copy down
printf ("%s\n", str);
memcpy (str+1, str, 25); // copy up
printf ("%s\n", str);
return 0;
}
节目输出
abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyzz
bbcdefghijklmnopqrstuvwxyz