代码改变世界

面试中常考的几个C库函数

2009-10-02 19:07  Iron  阅读(322)  评论(0编辑  收藏  举报
//内存移动
void *MemmoveEx (void *dest, const void *src, size_t len)
{
assert((dest!=NULL) && (src!=NULL));
char *d = (char *)dest;
const char *s = (char *)src;
if (d < s)
while (len--)
*d++ = *s++;
else
{
char *lasts = (char *)s + (len-1);
char *lastd = (char *)d + (len-1);
while (len--)
*lastd-- = *lasts--;
}
return dest;
}
//内存拷贝
void * MemcpyEx (void *dest, const void *src, size_t len)
{
assert((dest!=NULL) && (src!=NULL));
char *d = (char *)dest;
const char *s = (char *)src;
while (len--)
*d++ = *s++;
return dest;
}
//内存填充
void *MemsetEx (void *dest, int val, size_t len)
{
assert(dest!=NULL);
char *ptr = (char *)dest;
while (len-- > 0)
*ptr++ = val;
return dest;
}
//字符串拷贝
char *StrcpyEx (char *d, const char *s)
{
assert( (d != NULL) && (s != NULL) );
char *r = d;
while ((*d++ = *s++)!='\0');
return r;
}