Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130857
  • 博文数量: 52
  • 博客积分: 85
  • 博客等级: 民兵
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-28 09:25
文章分类
文章存档

2013年(4)

2012年(48)

分类: C/C++

2012-03-31 21:48:04

//============================================================================
// Name : HelloWorld.cpp
// Author : chio
// Version : ver.1.0.0
// Copyright : Suprasoft Inc,.
// Description : TODO
//============================================================================

#include <iostream>
#include <string.h>
#include <cassert>
using namespace std;

char * strcpy(char *dst, const char *src) {
assert(src != NULL && dst != NULL);
char *ret = dst;
while((*dst++ = *src++) != '\0') ;
return ret;
}

void * memcpy(void *dst, const void *src, size_t len) {
assert(src != NULL && 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;
}
 
阅读(1362) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~