您的位置:首页 > 其它

自我实现strcpy,memcpy函数

2012-06-25 11:16 387 查看
[cpp]
view plaincopy

// 字符串处理函数.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
//编程实现strcpy
char* strcpy(char* strDest,const char *strSrc){
if (strDest==NULL||strSrc==NULL)
{
return NULL;
}
char *temp=strDest;
while ((*strDest++=*strSrc++)!='\0');
return temp;
}

int getlen(const char *str){
int len=0;//保存长度
while (*str++!='\0')
{
len++;
}
return len;
}

//////////////////////////////////////////////////////////////////////////
//编程实现memcpy,考虑地址重叠情况
void *memcpy(void *memTo,const void *memFrom,size_t size){

if ((memTo==NULL)||(memFrom==NULL))
{
return NULL;
}
char* temp=(char*)memTo; //保存memFrom首地址
const char* tempFrom=(const char*)memFrom; //保存memTo首地址
if (temp>tempFrom && temp<tempFrom+size) //如果有地址重叠
{
for (int t=size-1;t>=0;--t)
{
temp[t]=tempFrom[t];
}
}
else{
for (int t=0;t<size;++t)
{
temp[t]=tempFrom[t];
}
}
return temp;
}
int _tmain(int argc, _TCHAR* argv[])
{
char strSrc[20]="abcdefgl";
char strDest[20];
int len=0;

len=getlen(strcpy(strDest,strSrc));
memcpy(strSrc+2,strSrc+1,4);
strSrc[2+4]='\0';
cout<<strDest<<endl;
cout<<len<<endl;
cout<<strSrc+2<<endl;
system("pause");
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: