模拟实现:
strstr
strcpy
strlen
strcat
strcmp
memcpy
memmove
================================
1 strstr 字符串中查找子字符串
char*my_strstr(constchar*dest,constchar*src){constchar*ret=dest;constchar*p=dest;constchar*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;}}returnNULL;}
===========================================
2 strcpy 字符串复制
char*my_strcpy(char*dest,constchar*src){char*ret=dest;assert(dest);assert(src);while(*dest++=*src++){;}returnret;}
==========================================
3 strlen 测字符串长度
intmy_strlen(constchar*s){constchar*p=s;while(*s){s++;}returns-p;}
==========================================
4 strcat 连接字符串
char*my_strcat(char*dest,constchar*src){char*ret=dest;assert(dest);assert(src);while(*dest){dest++;}while(*dest++=*src++){;}returnret;}
=========================================
5 strcmp 字符串复制
intmy_strcmp(constchar*s1,constchar*s2){assert(s1);assert(s2);while(*s1==*s2){if(*s1=='\0'){return0;}s1++;s2++;}return(*s1-*s2>0?1:-1);}
============================================
6 memcpy 内存复制
void*my_memcpy(void*buf1,constvoid*buf2,intcount){void*ret=buf1;char*dest=(char*)buf1;char*src=(char*)buf2;assert(buf1);assert(buf2);while(count--){*dest++=*src++;}returnret;}
=====================================================
7 memmove 内存移动
void*my_memmove(void*buf1,constvoid*buf2,intcount){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++;}}returnret;}