模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
2016-10-25 14:00
513 查看
模拟实现:
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
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
相关文章推荐
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- strlen,strcpy,strcat,strcmp,strstr,memcpy,的模拟实现方式
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 模拟实现strlen,strcpy,strcat,strstr,strcmp,memcpy,memmove
- 模拟实现//strcpy //strncpy //strcat //strncat //strcmp //strncmp //memcpy //memmove
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- mem系列函数(memset memcpy memmove) 和str系列函数(strlen strcpy strcmp strcat strstr strtok)
- 自己实现memcpy/strcpy/strcmp/strcat/strlen/strstr
- strcpy strlen memcpy strcat strcmp strstr strrev函数的实现代码
- 模拟实现函数库中的常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove,8实现memset
- 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- 常用的字符处理函数实现:strstr strcpy strcat memcpy memmove
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- strcpy,strcmp,strstr,strcat,memcpy,memmove,memset的模拟实现
- 模拟实现strcpy,strcmp,strcat,strstr.strlen