string函数的模拟实现

#include<stdio.h>
#include<assert.h>

size_t my_strlen(const char*str)//求字符串长度
{
    int length;
    for(length=0;*str!='\0';++length)
    {
        str++;
    }
    return length;
}

char *my_strcpy(char*str1,const char*str2)//字符串拷贝
{
    assert((str1!=NULL)&&(str2!=NULL));
    char *p=str1;
    while(*str2!='\0')
    {
        *str1++=*str2++;
    }
    *str1='\0';
    return p;
}
char *my_strcat(char *str1,const char*str2)//字符串连接
{
    assert((str1!=NULL)&&(str2!=NULL));
    char *p=str1;
    while(*str1!='\0')
    {
        ++str1;
    }
    while(*str2!='\0')
    {
        *str1++=*str2++;
    }
    *str1='\0';
    return p;
}   
char *my_strstr(const char*str1,const char*str2)//函数搜索一个字符串在另一个字符串中的第一次出现。
{
    assert((str1!=NULL)&&(str2!=NULL));
    for(int i=0;str1[i]!='\0';++i)
    {
        int tmp=i;
        int j=0;
        while(*str1==*str2)
        {
            str1++;
            str2++;
            if(*str2=='\0')
            {
                return &str1[tmp];
            }
        }
        i=tmp;
    }
    return 0;
}   
int my_strcmp(const char*str1,const char*str2)//字符串比较
{
    assert((str1!=NULL)&&(str2!=NULL));
    while((*str1!='\0')&&(*str2!='\0'))
    {
        if(*str1==*str2)
        {
            str1++;
            str2++;
        }
        else if(*str1<*str2)
        {
            return -1;
        }
        else
        return 1;
    }   
    if(*str1=='\0'&&*str2!='\0')
    {
        return -1;
    }
    if(*str1!='\0'&&*str2=='\0')    
    {
        return 1;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/qqkb1016/article/details/79776431