1.strlen的模拟实现
int my_strlen(char *rec)
{
int count = 0;
assert(rec);
while (*rec++ != '\0')
{
count++;
}
return count;
}
递归方式实现:
int My_strlen(char *rec)
{
assert(rec);
if (*rec == '\0')
return 0;
else
return 1 + My_strlen(rec + 1);
}
2.strcpy的模拟实现
char *my_strcpy(char *dest, const char* src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while (*dest++ = *src++)
{
;
}
return ret;
}
3.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;
}
4.strcmp的模拟实现
int my_strcmp(const char *dest, const char* src)
{
while (*dest == *src)
{
if (*dest == '\0')
return 0;
dest++;
src++;
}
return *dest - *src;
}
5.strchr的模拟实现
char *my_strchr(const char *dest, const char src)
{
assert(dest);
assert(src);
while (*dest != src && *dest)
dest++;
if (*dest != '\0')
return (char *)dest;
else
return NULL;
}
6.strstr的模拟实现
char *my_strstr(const char *dest, const char* src)
{
const char *cur = dest;
const char *p1 = dest;
const char *p2 = src;
assert(dest);
assert(src);
if (*src == '\0')
return (char*)dest;
while (*cur)
{
p1 = cur;
p2 = src;
while (*p1 && *p2 && (*p1 == *p2))
{
p1++;
p2++;
}
if (*p2 == '\0')
{
return (char*)cur;
}
cur++;
}
return NULL;
}
7.memcpy的模拟实现
void *my_memcpy(void *dest, const void* src, size_t count)
{
char *p1 = (char*)dest;
const char*p2 = (const char*)src;
void *ret = dest;
assert(dest);
assert(src);
while (count--)
{
*p1++ = *p2++;
}
return ret;
}
8.memmove的模拟实现
void *my_memmove(void *dest, const void* src, size_t count)
{
void *ret = dest;
assert(dest);
assert(src);
if (dest <= src)
{
while (count--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
dest = (char*)dest + count - 1;
src = (char*)src + count - 1;
while (count--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest - 1;
src = (char*)src - 1;
}
}
return ret;
}
如有不足之处请见谅,并批评指正