1.实现strcpy
char *Strcpy(char *des ,char *src)
{
if(des == NULL)
return ;
if(src == NULL)
return ;
char *tmp = des;
while (*des++ = *src++);
des = tmp;
return des;
}
2.实现strcat
void *Strcat(char *des, char *src)
{
assert(des);
assert(src);
char *tmp = des;
while (*des)
des++;
while (*des++ = *src++);
return tmp;
}
3.实现strstr
void *Strstr(const char *des, const char *src)
{
assert(des);
assert(src);
char *sub_str = src;
char *red_str = NULL;
char *black_str = des;
while (*black_str)
{
sub_str = src;
red_str = black_str;
while (*sub_str && red_str && (*sub_str == *red_str))
{
sub_str++; red_str++;
}
if (0 == *sub_str)
{
return black_str;
}
black_str++;
}
return NULL;
}
4.实现strchr
void *Strchr(const char *src,int c )
{
assert(src);
char *a = src;
while (*a)
{
if (*a == c)
break;
a++;
}
if (*a == '\0')
{
return NULL;
}
return a;
}
5.实现strcmp
int Strcmp(const char *str1, const char *str2)
{
assert(str1);
assert(str2);
const char *a = str1;
const char *b = str2;
while (*a && *b)
{
if (*a == *b)
{
a++; b++;
}
else
{
return *a > *b ? 1 : -1;
}
}
if (*a == '\0' && *b == '\0')
return 0;
if ('\0' == *a)
return -1;
else
return 1;
}
int Strcmp1(const char *str1, const *str2)
{
assert(str1);
assert(str2);
const char *a = str1;
const char *b = str2;
int ret = 0;
while (!(ret = *a - *b) && *a && *b )
{
a++; b++;
}
if (*a == '\0' && *b == '\0')
return 0;
if ('\0' == *a)
return -1;
else
return 1;
if (ret > 0)
return 1;
if (ret < 0)
return -1;
}
6.实现memcpy
void *Memcpy(void *des, void *src, size_t count)
{
assert(des);
assert(src);
char *a = (char*)des;
char *b = (char*)src;
while (count--)
{
*a = *b;
a++;
b++;
}
return des;
}
7.实现memmove
void *my_memmove(void *des, void *src, size_t count)
{
assert(des);
assert(src);
char *a = (char*)des;
char *b = (char*)src;
if (a > b && a <= (b + count))
{
while (count--)
{
*(a + count) = *(b + count);
}
}
else
{
while (count--)
{
*a = *b;
a++;
b++;
}
}
return des;
}