Implement memcpy

Very basic one, not handling edge cases or optimization.

  • in C sizeof(char) == 1 by definition, so copying by char-sized units copies byte
  • for non-overlapping regions only
  • needs to be unsigned char because plain char is signed depending on platform. eg. raw bytes 0x00, 0x80, 0xFF can be converted to
    signed: 0, -128, -1.
    unsigned: 0 128 255
#include <stddef.h>


void *memcpy(void *dest, const void *src, size_t count) {
    unsigned char *d = (unsigned char *) dest;
    const unsigned char *s = (const unsigned char *) src;
    for (size_t i = 0; i < count; i++) {
        d[i] = s[i];
    }
}

If dest starts after src and ranges overlap, copying forwards will overwrite bytes you still need from src.
Solution: copy to a temp buffer and then to dest.
Or copy backwards

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容