C语言字符串函数的算法实现2

1.strcpy

用  法: char *strcpy(char *str1, char *str2);

功  能: 串拷贝,将str2赋值给str1中

cahr *mystr(char* str1,cahr *str2)
{
    char *p=str1;
    if(str1==NULL ||str2==NULL)
        return NULL;
    while(*str2!=NULL)//拷贝到字符*str2为终止('\0'相当于NULL)
    {
        *str1=*str2;
        str1++;
        str2++;
    }
    *str1='\0';//因为拷贝最后一个字符为'\0',所以退出循环,所以补上
    return p;//返回str1的首地址
}

2.strset
用  法: char *strset(char *str, char c);

功  能: 将一个串中的所有字符都设为指定字符

char *mystrset(char *str,char ch)
{
    char *p=str;
    while(*str!='\0')
    {
        *str=ch;
        str++;
    }
    return p;
}

3. strstr
用  法: char *strstr(char *str1, char *str2);

功  能: 查找字符串str1,看看字符串str2是否包含在str1中。若存在返回str2字符串首次出现的位置,否则返回空

char *mystrstr(char *str1,char *str2)
{
    char *p=NULL;
    if(str1==NULL ||str2==NULL)
        return p;
    int length1=strlen(str1);//母字符串长度
    int length2=strlen(str2);//子字符串长度
    for(int i=0;i<length1-length2;i++)
    {
        int flag=1;//假设字符串相等
        for(int j=0;j<length2;j++)
        {
            if(str[i+j]!=str[j])//只要有一个字符不相等推出循环
            {
                flag=0;
                break;
            }
        }
        if(flag==1)
        {
            return (str1+i);//返回找到的位置
            break;
        }
    }
    return p;
}

今天就说到这儿,想探讨算法,或者有更好的方案下方留言!

猜你喜欢

转载自www.cnblogs.com/zulkar/p/10973840.html