strcpy,memcpy,memset函数实现
Posted NeilZhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strcpy,memcpy,memset函数实现相关的知识,希望对你有一定的参考价值。
strcpy 实现,只能拷贝字符串
char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) && (source != NULL)); while((*des++ = *source++)!=‘\0‘); return r; }
memcpy 实现,注意目的地址和源地址重合的情况,以及强制类型转换
void *myMemCopy(void *dest,const void *src,size_t count) { char *pDest=(char *)(dest); const char *pSrc=(const char *)(src); //目的地址和源地址重叠,从源地址的末尾方向开始拷贝 if( pDest>pSrc && pDest<pSrc+count ) { pDest = pDest + count-1; pSrc = pSrc + count-1; while(count--){ *pDest-- = *pSrc--; } } //目的地址和源地址不重叠,从源地址的开始方向拷贝 else { while(count--){ *pDest++ = *pSrc++; } } return pDest; }
memset函数
memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。
memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数
void* memset(void* s, int c, size_t n) { assert(str != NULL); unsigned char* p = (unsigned char*) s; while (n > 0) { *p++ = (unsigned char) c; --n; } return s; }
以上是关于strcpy,memcpy,memset函数实现的主要内容,如果未能解决你的问题,请参考以下文章
常用函数strcpy strcat strcmp strlen memcpy memset
梦开始的地方 —— C语言内存函数memcpy-memmove-memset(使用+模拟实现)
memcpymemmovememset及strcpy函数实现和理解
atoiitoa,strcpy,strcmp,memcpy等实现