#include<stdio.h>
#include<windows.h>
#include<assert.h>
#include <memory.h>
char *my_strcpy(char *dst, const char *src)
{
assert(dst);
assert(src);
char *ret = dst;
while (*dst++ = *src++)
{
;
}
return ret;
}
char *my_strcat(char *dst, const char *src)
{
assert(dst);
assert(src);
char *ret = dst;
while (*dst != '\0')
{
dst++;
}
dst = dst;
while (*dst++ = *src++)
{
;
}
return ret;
}
int my_strlen(const char *p)
{
assert(p);
int count = ;
while (*p++ != '\0')
{
count++;
}
return count;
}
char *my_strstr(const char *dst, const char *src)
{
assert(dst);
assert(src);
const char *pdst = dst;
const char*psrc = src;
int len = my_strlen(psrc);
while (my_strlen(dst) < my_strlen(src))
{
break;
}
while (my_strlen(pdst) > len)
{
while (*dst != *psrc)
{
dst++;
}
psrc = src;
pdst = dst;
while (*dst == *psrc)
{
dst++,psrc++;
}
if (*psrc == '\0')
{
return pdst;
}
}
return NULL;
}
char *my_strchr(char *dst, const char a)
{
assert(dst);
while (a != *dst)
{
dst++;
}
return dst;
}
int my_strcmp(const char *dst, const char *src)
{
assert(dst);
assert(src);
int count = ;
int len = my_strlen(dst);
while (my_strlen(dst) > len)
{
return -;
}
while (my_strlen(dst) < len)
{
break;
}
while ((*dst == *src) && (*dst != '\0'))
{
dst++;
src++;
count++;
}
if (count == len)
{
return ;
}
return ;
}
void *my_memcpy(void *dst,const void *src,int size)
{
assert(dst);
assert(src);
char *pdst = (char *)dst;
char *psrc = (char *)src;
char *p = pdst;
while ((pdst > psrc) | (pdst < psrc))
{
p = "因存在内存覆盖问题,请使用my_memmove函数";
return p;
}
while (size--)
{
*pdst++ = *psrc++;
}
return p;
}
void *my_memmove(void *dst, const void *src, int size)
{
assert(dst);
assert(src);
char *pdst = (char *)dst;
char *psrc = (char *)src;
char *p = pdst;
if (pdst>psrc)
{
pdst = pdst + size - ;
psrc = psrc + size - ;
while (size--)
{
*pdst-- = *psrc--;
}
}
if (pdst<psrc)
{
while (size--)
{
*pdst++ = *psrc++;
}
}
return p;
}