strlen
size_t My_strlen(char *str)
{
int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
strcpy
char *my_strcpy(char *dest, const char *src)
{
char *ret = dest;
// 拷贝src指向的字符串到dest指向的空间,包含'\0'
while (*dest++ = *src++)
{
;
}
// 返回目的空间的起始地址
return ret;
}
strncpy
char*mystrncpy(char*dest,const char*source,size_t count)
{
char*start=dest;
while(count&&(*dest++=*source++)) //copy string
count--;
if(count) //pad out with zeroes
while(--count)
*dest++='\0';
return(start);
}
strcat(字符追加函数)
char *my_strcat(char *dest, char *src)
{
char *ret = dest;
assert(dest != NULL);
assert(src);
// 1.找到目的字符串的'\0'
while (*dest != '\0')
{
dest++;
}
// 2.追加
while (*dest++ = *src++)
{
;
}
return dest;
}
strcmp
int mystrcmp(const char *str1, const char *str2)//==不能用来比较两个字符串是否相等
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
if (*str1 > *str2)
{
return 1;
}
else
return -1;
}
strstr
char *my_strstr(const *p1,const *p2)
{
assert(p1!=NULL);
assert(p2!=NULL);
char*s1=p1;
char*s2=p2;
char*cur=p1;
//NULL 空指针 NUL/Null '\0'
if (*p2=='\0')
{
return p1;
}
while (*cur)
{
s1=cur;
s2=p2;
while ((*s2!='\0')&&*s1==*s2)
{
s1++;
s2++;
}
if(*s2=='\0')
{
return cur;
}
cur++;
}
}