strcpy:直接将strSrc复制给strDest,而不考虑Dest原来的内容。
memcpy:将strSrc的前count个元素复制给Dest的前count个元素。
// strcpy.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <string.h>
#include <assert.h>
//using namespace std;
char* mystrcpy(char* strDest,char* strSrc){
assert((strDest!=NULL) && (strSrc!=NULL));
if(strDest==strSrc) return strDest;
char * address = strDest;
while((*strDest++ = *strSrc++)!='\0');
return address;
}
void* mymemcpy(void* dest, void* src, size_t count){
char* pdest = static_cast<char*>(dest);
char* psrc = static_cast<char*>(src);
if((pdest>psrc) && (pdest<=psrc+count)){
for(int i=count-1;i>=0;i--){
pdest[i] = psrc[i];
}
}
else{
for(int i=0; i<count; i++){
pdest[i] = psrc[i];
}
}
return dest;
}
int main(int argc, char** argv)
{
char s[] = "safe";
char t[] = "abcdef";
mystrcpy(t,s);
printf("%s\n",s);
printf("%s\n",t);
char p[] = "cdefgh";
mymemcpy(p,s,4);
printf("%s\n",s);
printf("%s\n",p);
return 0;
}