技术交流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。