/*考虑有重叠区的情况下必须分别处理*/
#include <iostream>
#include <cstring>
using namespace std;
char *Mystrcpy(char *pdes,const char *psrc)
{
if(pdes == NULL || psrc == NULL)
return NULL;
char *res = pdes;
int len = strlen(psrc);
int i = len;
if(pdes >= psrc)
{
while(i >= 0)
{
*(pdes + i) = *(psrc + i);
--i;
}
}
else
{
while(*psrc != '\0')
{
*pdes = *psrc;
++pdes;
++psrc;
}
*pdes = '\0';
}
return res;
}
int main(int argc, char **argv)
{
char pdes[5];
char psrc[5] = "1234";
Mystrcpy(psrc+1,psrc);
//Mystrcpy(psrc,psrc+1);
cout<<psrc<<endl;
return 0;
}
实现strcpy,考虑内存重叠
最新推荐文章于 2022-10-17 22:45:00 发布

1716

被折叠的 条评论
为什么被折叠?



