<span style="color:#3333ff;">char *my_strcpy(char *str1,const char *str2)
{
char *start = str1; //保存字符数组2的首地址
assert(str1);
assert(str2);
while(*str1++ = *str2++)
{
;
}
return start;
}</span>
<span style="color:#3333ff;">int my_strlen(const char *str1)
{
int count = 0;
assert(str1);
while(*str1++)
{
count++;
//str1++;
}
return count;
}</span>
<span style="color:#3333ff;">int my_strcmp(const char *str1,const char *str2)
{
assert(str1);
assert(str2);
while(*str1 == *str2)
{
if(*str1 != '\0')
return 0;
str1++;
str2++;
}
return *str1 - *str2;
}</span>
<span style="color:#3333ff;">char *my_strcat(char *str1,const char *str2)
{
char *start = str1; //保存字符数组的首地址
assert(str1);
assert(str2);
while(*str1)
{
str1++;
}
while(*str2)
{
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return start;
}</span>
<span style="color:#3333ff;">char *my_strstr(const char *str, const char *substr)
{
const char *str1 = str;
const char *str2 = substr;
const char *start = NULL;
assert(str);
assert(substr);
if(*str2 == '\0')
return (char *)str1;
while(*str1)
{
start = str1; //找到的第一个字符保存
while(*str1 && *str2 && *str1 == *str2)
{
str1++;
str2++;
}
if(*str2 == '\0')
return (char *)start;
str1 = start + 1;
str2 = substr;
}
return NULL;
}</span>
<span style="color:#3333ff;">char *my_strncat(char *str1,char *str2,size_t n)
{
char *start = str1; //保存字符数组1 的起始地址
assert(str1);
assert(str2);
while(*str1)
{
str1++;
}
while(n)
{
*str1 = *str2;
str1++;
str2++;
n--;
}
*str1 = '\0';
return start;
}</span>
<span style="color:#3333ff;">int my_strncmp(const char *str1,const char *str2,size_t n)
{
assert(str1);
assert(str2);
while(n && *str1 && *str1 == *str2)
{
if(*str1 != '\0')
return 0;
str1++;
str2++;
n--;
}
return *str1 - *str2;
}</span>
<span style="color:#3333ff;">char *my_strncpy(char *str1,char *str2,size_t n)
{
char *start = str1;
assert(str1);
assert(str2);
while((n--) && (*str1++ = *str2++))
{
//*str1++ = *str2++;
//n--;
}
*str1 = '\0';
return start;
}</span>