不用库函数,自己实现strcpy和memcpy函数
1.代码实现
char* strcpy(char* strDest, const char* strSrc)
{
ASSERT(strDest != NULL && strSrc != NULL);
char* strTmpD = strDest;
while ((*strTmpD++ = *strSrc++) != '0')
{
}
return strDest ;
}
void* memcpy(void* pDest, const void* pSrc, unsigned int size)
{
ASSERT(pDest != NULL && pSrc != NULL);
byte* pTmpD = (byte*)pDest;
byte* pTmpS = (byte*)pSrc;
while (size-- >0)
{
*pTmpD++ = * pTmpS++;
}
return pDest;
}
2.strcpy和memcpy的区别
(1).strcpy只能用于字符串拷贝;而memcpy是内存拷贝,可以拷贝任何类型的数据。
(2).当二者都进行字符串拷贝时,strcpy遇到字符串结尾'/0'即完成;而memcpy只是内存的原样拷贝,不管遇到什么。
memcpy() -- 拷贝内存内容
相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy() 表头文件: #include <string.h> 定义函数: void *memcpy(void *dest, const void *src, size_t n) 函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'/0'而结束 返回值: 返回指向dest的指针 附加说明: 指针src和dest所指的内存区域不可重叠
实例: ------------------------------------------------------- #include <string.h> #include <stdio.h> int main() { char a[30] = "string (a)"; char b[30] = "hi/0zengxiaolong"; int i; strcpy(a, b); //a[30] = "hi/0ing (a)" printf("strcpy():"); for(i = 0; i < 30; i++) printf("%c", a[i]); //hi ing (a) memcpy(a, b, 30); //a[30] = "hi/0zengxiaolong" printf("/nmemcpy():"); for(i = 0; i < 30; i++) printf("%c", a[i]); //hi zengxiaolong printf("/n i = %d/n", i); //30
|