//strlen
//1.
size_t my_strlen(char *str)
{
if (*str == '\0')
{
return 0;
}
return 1 + my_strlen(str+1);
}
//2.
//int my_strlen(char *str)
//{
// char *p = str;
// while (*p != '\0');
// {
// p++;
// }
// return p - str;
//}
//strcmp
char *my_strcpy(char *d, const char *s)
{
if (s != '\0')
{
while (*d++ = *s++)
{
;
}
}
return d;
}
//strcat
char *my_strcat(char *d, char *s)
{
if (*s != '\0' && *d != '\0')
{
char *ret = d;
while (*ret != '\0')
{
ret++;
}
while (*ret++ = *s++)
{
;
}
}
return d;
}
char *my_strstr(char *s1, const char *s2)
{
if (s2 != NULL && s1 != NULL)
{
char *ret = s1;
while (*ret != '\0')
{
char *a = ret;
if (*ret == *s2)
{
char *b = s2;
while (*ret++ == *b++ && *b != '\0')
{
;
}
if (*(ret-1) == *(b-1))
{
return a;
}
}
ret++;
}
return NULL;
}
}
//strchr
char *my_strchr(char *d, char a)
{
while (*d != '\0')
{
if (*d == a)
{
return d;
}
d++;
}
return NULL;
}
char* my_strrchr(const char* str, int ch)
{
char *pos = NULL;
while (*str)
{
if (*str == ch)
{
pos = str;
}
str++;
}
if (str != NULL)
{
return pos;
}
return NULL;
}
char* my_strncpy(char* dest, const char* src, size_t len)
{
char *ret = dest;
if (dest != NULL && src != NULL)
{
while (len--)
{
*dest++ = *src++;
}
*dest = '\0';
}
return ret;
}
char* my_strncat(char* dest, const char* src, size_t len)
{
assert(dest);
assert(src);
char *ret = dest;
while (*dest != '\0')
{
dest++;
}
while (len--)
{
*dest++ = *src++;
}
return ret;
}