strlen()
功能:计算给定字符串的长度(直到碰到第一个字符串结束符'\0'为止)
int my_strlen(const char* str)
{
if (str == NULL)
return 0;
int count = 0;
while (*str!= '\0')
{
count++;
str++;
}
return count;
}
strcat()
功能:将源字符串复制到目标字符串,从目标字符串的'\0'开始复制
char* my_strcat(char *dst, const char *src)
{
if (dst == NULL || src == NULL)
return NULL;
char* tmp = dst;
while(*tmp !='\0')
{
tmp++;
}
while(*tmp++ = *src++)
{}
return dst;
}
strstr()
功能:在目标字符串中找源字符串,如果存在返回目标字符串的起始位置,如果不存在返回空指针
char* my_strstr(const char *dst, const char *src)
{
const char* cur = dst;
if (dst == NULL || src == NULL)
return NULL;
while (*cur)
{
const char* s1 = cur;
const char* s2 = src;
while (*s1&&*s2&&*s1==*s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
return (char*)cur;
cur++;
}
return NULL;
}
strchr()
功能:在目标字符串中找源字符,如果存在返回目标字符串的起始位置,如果不存在返回空指针
char* my_strchr(const char *dst, int ch)
{
if (dst == NULL)
return NULL;
const char* cur = dst;
while (*cur)
{
if (*cur == ch)
return (char*)cur;
cur++;
}
return NULL;
}
strcmp()
功能:进行两个字符串的比较,如果第一个字符串和第二个字符串大于关系,返回1,小于关系,返回-1,等于关系返回0.
int my_strcmp(const char *str1, const char *str2)
{
if (str1 == NULL || str2 == NULL)
return -1;
while (*str1 == *str2)
{
if (*str1 == '\0'&&&*str2 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else
return -1;
}
注意
以上的函数返回值和参数列表,返回值char*方便链式访问,返回值为int的,方便调用处使用,参数列表中的限定,体现程序设计中的严谨
By:
//不建议写法
while(*str++ != '\0')
{ }
//建议写法
while (*str != '\0')
{
str++;
}