版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36391130/article/details/82021267
int fl_strlen_1(const char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int fl_strlen_2(const char* str)
{
if (*str == '\0')
return 0;
else
return 1 + fl_strlen_2(++str);
}
int fl_strlen_3(char* str)
{
char* behind = str;
while (*behind!='\0')
behind++;
return behind - str;
}
char* fl_strcpy(char* dest, const char* src)
{
char* ret = dest;
assert(dest || src);
while ((*dest++ = *src++));
return ret;
}
char* fl_strcat(char* dest, const char* src)
{
assert(dest);
assert(src);
char* pd = dest;
while (*pd)pd++;
while (*pd++ = *src++);
return dest;
}
char* fl_strstr(const char* bsstr,const char* substr)
{
assert(bsstr);
assert(substr);
while (*bsstr)
{
if (*bsstr == *substr)
{
char* our = (char*)bsstr+1;
const char* inr = substr+1;
while (*our++ == *inr++)
{
if (*inr == '\0')
return (char*)bsstr;
}
}
bsstr++;
}
return NULL;
}
int fl_strcmp(const char* str1,const char* str2)
{
assert(str1);
assert(str2);
while (*str1 == *str2 )
{
++str1, ++str2;
if (*str1 == '\0')
return 0;
}
return *str1 - *str2;
}
void fl_memcpy(void* dest,void* src,size_t n)
{
assert(dest);
assert(src);
while (n--)
{
if ((*(char*)dest = *(char*)src) == '\0')
return;
((char*)dest)++;
((char*)src)++;
}
}
void fl_memmove(void* dest, void* src,size_t n)
{
assert(dest);
assert(src);
if (dest == src || n<1)
return;
char* pd = (char*)dest;
char* ps = (char*)src;
if (ps + n > pd)
{
while (n--)
{
*(pd+n) = *(ps+n);
}
}
else
{
while (n--)
{
*pd = *ps;
ps++, pd++;
}
}
}