本文共 1812 字,大约阅读时间需要 6 分钟。
int my_strlen(const char* str){ int count = 0; while (*str) { count++; str++; } return count;}
char* my_strcpy(char* dst, char* src){ assert(dst); assert(src); char *p = dst; while ((*dst++ = *src++)) { ; } return p;}
char* my_strcat(char* dst, const char* src){ assert(src); assert(dst); char* p = dst; while (*dst++) { dst++; } while ((*dst++ = *src++)) { ; } return p;}
char* my_strstr(const char*str1, const char* str2){ assert(str1); assert(str2); char* p1 = str1; char* p2 = str2; char* s = NULL; if (*str2 == '\0') return NULL; while (*p1) { s = p1; p2 = str2; while (*s && *p2 && (*p2 == *s)) { s++; p2++; } if (*p2 == '\0') return p1; p1++; }}
int my_strcmp(const char* str1, const char* str2){ int ret = 0; while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str1) { ++str1; ++str2; } if (ret < 0) ret = -1; if (ret>0) ret = 1; return ret;}
void* memcpy(void* dst,void* src,size_t n){ char* d = dst; const char* s = src; while (n--) { *d++ = *s++; } return dst;}
void* memmove(void* dst, void* src, size_t n){ void* d = dst; if (dst <= src || (char*)dst >= ((char*)src + n)) { while (n--) { *(char*)dst = *(char*)src; dst = (char*)dst + 1; src = (char*)src + 1; } } dst = (char*)dst + n - 1; src= (char*)src + n - 1; while (n--) { *(char*)dst = *(char*)src; dst = (char*)dst - 1; src = (char*)src- 1; } return d;}
转载地址:http://gtuoi.baihongyu.com/