实现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
const char *my_strstr(const char *dest, const char *src)
{
const char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
if(!*src)
{
return ret;
}
while(*dest)
{
const char *s1 = dest;
const char *s2 = src;
while((*s1)&&(*s2)&&(*s1 == *s2))
{
s1++;
s2++;
}
if(*s2 == '\0')
{
return dest;
}
dest++;
}
return NULL;
}
实现strchr
const char *my_strchr(const char *dest, char src)
{
assert(dest != NULL);
while((*dest)&&(*dest != src))
{
dest++;
}
if(*dest)
{
return dest;
}
else
{
return NULL;
}
}
实现strcmp
int my_strcmp(const char *dest, const char *src)
{
assert(dest != NULL);
assert(src != NULL);
while((*dest != '\0')&&(*dest == *src))
{
dest++;
src++;
}
// return *dest-*src;
if(*dest > *src)
return 1;
else if(*dest < *src)
return -1;
else
return 0;
}
实现memcpy
void *my_memcpy(void *dest,const void *src, int count)
{
char *ret = (char *)dest;
assert(dest);
assert(src);
while(count--)
{
*(char *)dest = *(char *)src;
((char *)dest)++;
((char *)src)++;
}
return ret;
}
实现memmove
void *my_memmove(void *dest,const void *src, int count)
{
char *ret = dest;
assert(dest);
assert(src);
if(dest>src)
{
while(count--)
{
*((char *)dest+count-1) = *((char *)src+count-1);
}
}
else
{
while(count--)
{
*(char *)dest = *(char *)src;
((char *)dest)++;
((char *)src)++;
}
}
return ret;
}
有待补充