自我实现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;
}
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;
}
相关文章推荐
- 自我实现strcpy,memcpy函数
- strcpy和memcpy函数的实现及其区别
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- 面试中长间的strcpy、字符串整形相互转换、memcpy函数的实现
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- 不用库函数,自己实现strcpy和memcpy函数;二者的区别
- strcpy、memcpy函数的实现
- strcpy,memcpy函数的实现
- (C++面试题)请实现strcpy、memcpy函数
- 不用库函数,自己实现strcpy和memcpy函数
- strcpy和memcpy函数的实现
- C语言中strcpy与memcpy函数实现与区别
- 【19】实现strcpy和memcpy函数
- 编程实现strcpy和memcpy函数
- strcpy和memcpy函数的实现
- C中strcpy与memcpy函数实现与区别
- 模拟实现strcpy
- strcpy 、 strlen 、strcat 函数的实现
- C语言,模拟实现strcpy、strlen函数
- [C/C++笔面试]不用库函数自己实现strcpy和strncpy