函数strcpy
字符串拷贝函数,原型:
char *strcpy(char* dest, const char *src);
从src逐字节拷贝到dest,直到遇到'\0'结束,因为没有指定长度,可能会导致拷贝越界,造成缓冲区溢出漏洞,安全版本是strncpy函数。
自己写strcpy:
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||strSrc==NULL))
return NULL;
char * strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
*strDest = '\0';
return strDestCopy;
}
函数memcpy
从s2指向的对象中复制n个字符到s1指向的对象中。如果复制发生在两个重叠的对象中,则这种行为未定义。
void *memcpy(void *s1, const void *s2, size_t n);
函数memcpy返回s1的值。
自己写memcpy:
void * memcpy(void *dst, void *src, int num){
if (dst == NULL || src == NULL || num <= 0)
return NULL;
char *pdst = (char *)dst;
char *psrc = (char *)src;
if (psrc < pdst&&pdst < psrc + num){
pdst = pdst + num - 1;
psrc = psrc + num - 1;
while (num--){
*pdst = *psrc;
pdst--;
psrc--;
}
}
else{
while (num--){
*pdst = *psrc;
pdst++;
psrc++;
}
}
return dst;
}
原文链接: https://www.cnblogs.com/yjcoding/p/13284295.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/364950
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!