strcpy和memcpy的标准实现

来源:互联网 发布:python字符串变成列表 编辑:程序博客网 时间:2024/05/22 12:10

strcpy和memcpy都是标准C库函数,它们有下面的特点。
strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。

已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);
memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
void *memcpy( void *dest, const void *src, size_tcount );

#include <iostream>#include <string.h>#include <cassert>using namespace std;char* strcpy(char *dst, const char *src) {assert(src != NULL);assert(dst != NULL);char *ret = dst;while((*dst++ = *src++) != '\0') ;return ret;}void* memcpy(void *dst, const void *src, size_t len) {assert(src != NULL);assert(dst != NULL);void *ret = dst;int i = len;if(src < dst) {char *csrc = (char *)src;char *cdst = (char *)dst;while(i--){*cdst++ = *csrc++;}} else {char *csrc = (char *)src + len - 1;char *cdst = (char *)dst + len - 1;while(i--) {*cdst-- = *csrc--;}}return ret;}int main() {char *src = "hello world";char *dst = new char[0];cout << strcpy(dst, src) << endl;void *memsrc = (void *)"hello";char memdst[6];memdst[5] = '\0';cout << (char *)memcpy(memdst, memsrc, 5) << endl;return 0;}


0 0
原创粉丝点击