您的位置:首页 > 其它

模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove

2015-12-04 21:27 886 查看
模拟实现:
strstr
strcpy
strlen
strcat
strcmp
memcpy
memmove
================================
1 strstr 字符串中查找子字符串
char * my_strstr(const char *dest, const char *src)
{
const char *ret = dest;
const char *p = dest;
const char *q = src;
assert(dest != NULL && src != NULL);
while(ret)
{
q = src;
while(*p == *q)
{
p++;
q++;
}
if(*q == '\0')
{
return (char *)ret;
}
else
{
p = ++ret;
}
}
return NULL;
}
===========================================
2 strcpy 字符串复制
char *my_strcpy(char *dest,const char *src)
{
char *ret = dest;
assert(dest);
assert(src);
while(*dest++ = *src++)
{
;
}
return ret;
}
==========================================
3 strlen 测字符串长度
int my_strlen(const char *s)
{
const char *p = s;
while(*s)
{
s++;
}
return s - p;
}
==========================================
4 strcat 连接字符串
char * my_strcat(char *dest, const char *src)
{
char *ret = dest;
assert(dest);
assert(src);
while(*dest)
{
dest++;
}
while(*dest++ = *src++)
{
;
}
return ret;
}
=========================================
5 strcmp 字符串复制
int my_strcmp(const char *s1, const char *s2)
{
assert(s1);
assert(s2);
while(*s1 == *s2)
{
if(*s1 == '\0')
{
return 0;
}
s1++;
s2++;
}
return (*s1 - *s2 > 0 ? 1 : -1);
}
============================================
6 memcpy 内存复制
void * my_memcpy(void *buf1,const void *buf2,int count)
{
void *ret = buf1;
char *dest = (char *)buf1;
char *src = (char *)buf2;
assert(buf1);
assert(buf2);
while(count--)
{
*dest++ = *src++;
}
return ret;
}
=====================================================
7 memmove 内存移动
void *my_memmove(void *buf1, const void *buf2,int count)
{
void *ret = buf1;
char *dest = (char *)buf1;
char *src = (char *)buf2;
assert(buf1);
assert(buf2);
if(dest > src && dest < src + count)//重叠时从后向前移动
{
while(count--)
{
*(dest + count) = *(src + count);
}
}
else
{
while(count--)
{
*dest++ = *src++;
}
}
return ret;
}


本文出自 “城市猎人” 博客,请务必保留此出处http://alick.blog.51cto.com/10786574/1719727
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: