1.实现strcpy
/* 1.实现strcpy */ char *my_strcpy(char *dest, const char *src) { char *ret = dest; assert(dest != NULL); assert(src != NULL); while ((*dest++ = *src++)){//赋值 ; } return ret; }
2.实现strcat
/* 2.实现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; }
3.实现strstr
/* 3.实现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 0; } while (*cp){ s1 = cp; substr = str2; while (*s1 && *substr && (*s1 == *substr)){ s1++; substr++; } if (*substr == '\0'){ return cp; } cp++; } }
4.实现strchr
/* 4.实现strchr 函数功能:查找一个字符。在一个字符串中查找一个特定的字符。 函数原型:char *strchr(char const *str,int ch); 函数说明:strchr在字符串str中查找字符ch第一次出现的位置,找到后返回一个指向该位置的指针。如果该字符不存在于字符串中,则返回一个NULL指针。 注意:第二个参数是一个整型值,但是,它包含了一个字符串值。 函数实现 */ char *my_strchr(char *s, char c) { char*p = s; while (*s && *s != c) s++; if (*s == c) return s; return NULL; }
5.实现strcmp
/* 5.实现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; }
6.实现memcpy
/* 6.实现mencpy */ void *memcpy(void *dst, const void *src, size_t count) { void *ret = dst; while (count--){ *(char *)dst = *(char *)src; dst = (char *)dst + 1; src = (char *)src + 1; } return ret; }
7.实现memmove
/* 7.实现memmove */ void *memmove(void *dst, const void *src, size_t count) { void *ret = dst; if (dst <= src || (char *)dst >= ((char *)src + count)){ while (count--){ *(char *)dst = *(char *)src; dst = (char *)dst + 1; src = (char *)src + 1; } } else{ dst = (char *)dst + count - 1; src = (char *)src + count - 1; while (count--){ *(char *)dst = *(char *)src; dst = (char *)dst - 1; src = (char *)src - 1; } } }