一.求字符串函数的长度
1.strlen
头文件:<string.h>
int my_strlen(const char* str)
{
int count = 0;
while (*(str++) != 0)
{
count++;
}
return count;
}
二、长度不受限制的字符串函数
1、strcpy(字符串拷贝)
头文件:<string.h>
char* my_strcpy(char*s,const char*p )
{
char* ret = s;
assert(s && p);
while (*s++ = *p++)
{
;
}
return ret;
}
2.strcmp(两个字符串对应位置字符大小依次对比)
头文件:<string.h>
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
str1++;
str2++;
if (*str1 == '\0')
{
return 0;
}
}
if (*str1 > *str2)
return 1;
else
return -1;
}
3.strcat(在一字符串后添加另一字符串)
头文件:<string.h>
char* my_strcat(char* e1, const char* e2)
{
char* ret = e1;
assert(e1 && e2);
while (*e1)
{
e1++;
}
while (*e1++ = *e2++)
{
;
}
return ret;
}
4.strstr(字符串中查找另一字符串,并返回该处地址)
头文件:<string.h>
char* my_strstr(const char* e1, const char* e2)
{
char* ret = e1;
char* s1 = e1;
char* s2 = e2;
while (*ret)
{
s1 = ret;
s2 = e2;
while (*s1 && *s2 && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return ret;
}
ret++;
}
return NULL;
}
内存函数
1.memcpy(比较任意类型的数据)
头文件:<string.h>
void* my_memcpy(void* str, const void* sur, size_t n)
{
void* ret = str;
assert(str && sur);
while (n--)
{
*(char*)str = *(char*)sur;
str = (char*)str + 1;
sur = (char*)sur + 1;
}
return ret;
}
2.memmove(字符串复制,支持自身覆盖区域正常复制)
头文件:<string.h>
void* my_memmove(void* str, const void* sur, size_t n)
{
void* ret = str;
assert(str && sur);
if (str > sur)
{
while (n--)
{
*((char*)str + n) = *((char*)sur + n);
str = (char*)str + 1;
sur = (char*)sur + 1;
}
}
else
{
while (n--)
{
*(char*)str = *(char*)sur;
str = (char*)str + 1;
sur = (char*)sur + 1;
}
}
return ret;
}