#include <stdio.h>
/**
memcpy函數(shù)實現(xiàn)
void *memcpy(void *str1, const void *str2, size_t n)
*/
void *Memcpy(void *str1, const void *str2, size_t n)
{
if(str1 == NULL || str2 == NULL || n <= 0){
return NULL;
}
char *pstr1 = (char *)str1;
char *pstr2 = (char *)str2;
// 說明str1在str2中間,有內(nèi)存重疊
// 為了防止copy時不破壞str2,從后向前拷貝
if(pstr1 > pstr2 && pstr1 < (pstr2 + n)){
pstr1 += (n - 1);
pstr2 += (n - 1);
while(n--){
*pstr1-- = *pstr2--;
}
}
else{
while(n--){
*pstr1++ = *pstr2++;
}
}
}
int main()
{
char buf1[] = "hello, world!";
char buf2[100];
Memcpy(buf2, buf1, 5);
printf("%s\n", buf2);
return 0;
}
2020-09-04 memcpy函數(shù)實現(xiàn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。