技术交流QQ群:1027579432,欢迎你的加入!
1.strcopy()函数
- strcopy()函数只提供字符串的复制。即strcopy()只用于字符串之间的复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。
#include <iostream>
using namespace std;
// 两个字符串之间的复制
char* strcopy(char* dest, char* src){
if(dest == NULL || src == NULL) return NULL;
char* res = dest;
while((*dest++ = *src++) != '\0');
return res;
}
int main(){
char cc[100];
cout << "请输入一个字符串:";
cin >> cc;
char* src = cc;
char* dest = new char[100]; // 新开辟一段内存空间
cout << "源字符串: " << src << endl;
dest = strcopy(dest, src);
cout << "目标字符串: " << dest << endl;
return 0;
}
2.memcpy()函数
- memcpy()提供了一般内存之间的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
void *memcpy(void* dest, const void* src, size_t size)
{
if(dest == nullptr || src == nullptr) return nullptr;
char* tempSrc = (char*) src;
char* tempDest = (char*) dest;
while(size--)
{
*tempDest++ = *tempSrc++;
}
return tempDest;
}
3.两者之间的区别
- 复制的内容不同:strcpy只复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
- 复制的方法不同:strcpy不需要指定长度,它遇到被复制的字符串结束符\0才结束,所以容易溢出,而memcpy则根据第3个参数决定复制的长度。
- 用途不同:通常在复制字符串时用strcpy,而需要复制其他类型数据时一般用memcpy。