memmove 简单实现,出了很多问题
#include <stdio.h>
#include <string.h>
void *_memmove(char *str1, const char *str2, size_t n)
{
if (n == 0 && n < strlen(str2))
return NULL;
strncpy( str1, str2, n); //为什么会出现段错误
return str1;
}
int main()
{
char *dest = "abcdefghijklmnopqrstuvwxyz0123456789";
char *src = "******************************";
printf("destination prior to memmove: %s\n", dest);
_memmove(dest, src, 3);
printf("destination after memmove: %s\n", dest);
return 0;
}
[解决办法]
_memmove(dest, src, 3);
出现错误是因为你对常量区的数据进行了操作
[解决办法]
先
http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express
点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装
再参考
简单版:C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\memmove.c
增强版:C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\intel\memcpy.asm