模拟实现strlen,strcpy,strcat,strstr,strcmp函数

来源:互联网 发布:澳洲绵羊油 知乎 编辑:程序博客网 时间:2024/05/16 17:13

模拟实现strlen
参考代码:
三种方式:
方式1:

int my_strlen(const char * str){int count = 0;while(*str){count++;str++;}return count;}

方式2:

int my_strlen(const char * str){if(*str == '\0')return 0;elsereturn 1+my_strlen(str+1);}

方式3:

int my_strlen(char *s){char *p = s;while(*p != ‘\0’ )p++;return p-s;}

模拟实现strcpy
参考代码:

char *my_strcpy(char *dest, const char*src){char *ret = dest;assert(dest != NULL);assert(src != NULL);while((*dest++ = *src++)){;}return ret;}

模拟实现strcat
参考代码:

char *my_strcat(char *dest, const char*src){char *ret = dest;assert(dest != NULL);assert(src != NULL);while(*dest){dest++;}while((*dest++ = *src++)){;}return ret;}

模拟实现strstr
参考代码:

char *my_strstr(const char* str1, const char* str2 ){assert(str1);assert(str2);char *cp = (char*)str1;char *substr = (char *)str2;char *s1 = NULL;if(*str2 == '\0')return NULL;while(*cp){s1 = cp;substr = str2;while(*s1 && *substr && (*s1 == *substr)){s1++;substr++;}if(*substr == '\0')return cp;cp++;}}

模拟实现strcmp
参考代码:

int my_strcmp (const char * src, const char * dst){int ret = 0 ;while( ! (ret = *(unsigned char *)src - *(unsigned char*)dst) && *dst)++src, ++dst;if ( ret < 0 )ret = -1 ;else if ( ret > 0 )ret = 1 ;return( ret );}
阅读全文
0 0
原创粉丝点击