memcpy的实现,注意重合的情况,还有size_t类型没有-1,为无符号整型。代码如下
#include <iostream>
using namespace std;
void *memcpy(void *dest, const void *src, size_t num)
{
char *destc = (char *)dest;
const char *srcc = (const char *)src;
if(srcc < destc && destc < srcc + num)
{
size_t i = num;
while(i>0)
{
destc[i-1] = srcc[i-1];
i--;
}
}
else
{
size_t i = 0;
while(i<=num-1)
{
destc[i] = srcc[i];
i++;
}
}
return destc;
}
int main()
{
char a[] = "world";
memcpy(&a[1], a, 2);
cout<<a<<endl;
return 0;
}
strcmp 的实现
int strcmp(const char* str1,const char* str2)
{
int ret=0;
while((ret=*(unsigned char *)str1-*(unsigned char *)str2)==0&&*str2)
str1++;str2++;
if(ret==0)
return 0;
else if(ret<0)
return -1;
else
return 1;
}