C++ strcpy, memcpy,strlen 实现

【题目4-5】编程实现 strcpy 函数 char* strcpy(char* strDest, const char* strSrc)

【题目4-6】编程实现 memcpy 函数 void* memcpy(void* memTo, const void* memFrom, size_t size)

 1 #include <stdio.h>
 2 #include <assert.h>
 3 
 4 char* strcpy(char* strDest, char* strSrc){
 5     if(strDest==NULL || strSrc==NULL) return NULL;
 6     char *strDestCopy = strDest;        // 保存目标字符串的首地址
 7     while((*strDest++=*strSrc++)!='\0');
 8     return strDestCopy;
 9 }
10 
11 int strlen(const char* strSrc){
12     int len = 0;
13     while(*strSrc++!='\0') len++;
14     return len;
15 }
16 
17 void memcpy(void* memTo, const void* memFrom, size_t size){
18     assert((memTo!=NULL)&&(memFrom!=NULL));
19     char* tempFrom = (char*)memFrom;
20     char* tempTo = (char*)memTo;
21     while(size-->0)
22         *tempTo++ = *tempFrom++;
23     return memTo;
24 }

【题目4-7】strcpy 与 memcpy 的区别

(1)复制的内容不同:strcpy 只能复制字符串,memcpy可以复制任意内容

(2)复制的方法不同:strcpy 不需要指定长度,它是遇到字符串结束 '\0' 而结束的,memcpy 则是根据其中第三个参数决定复制的长度

(3)用途不同:通常在复制字符串时用 strcpy; 而若需要复制其他类型数据,则一般用 memcpy.

 

上一篇:memcpy函数


下一篇:memcpy的实现