【题目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.