20240712作业

#include <stdio.h>

int  my_strlen(char *a)//计算字符串的长度
{
    int k=0;
    while(*a!='\0')//直到a字符串的结尾 判定'\0'
    {
        a++;//没检测到'\0'则一直++
        k++;
    }
    return k;
}

void my_strcpy(char *a,const char *b)//赋值函数 将b赋值到a
{
    while(*b!='\0')//直到b字符串的末尾 检测'\0'
    {
        *a++=*b++;//b的第0位赋值给a的第0位 然后++ 赋值1,2,3..位
    }
    *a='\0';
}

int my_strcmp(const char *a,const char *b)//判断ab字符串大小
{
    int k=0;
    while(*a!='\0'||*b!='\0')//当a和b字符串都到达末尾时停止循环
    {
        if(*a>*b)//a和b的当前位置相比较
        {
            k=1;
            break;//比出大小后立即结束循环
        }else if(*a<*b)
        {
            k=-1;
            break;
        }else k=0;//当前位置相同则k=0
        *a++;//若当前位置相同,++,继续判断下一位
        *b++;
    }
    return k;
}


void my_strcat(char *a,const char *b)//连接函数 b接到a后面
{
    while(*a!='\0'){//让 a ,即*a的地址到达字符串末尾
        a++;
    }
    while(*b!='\0')//直到b末尾
    {
        *a++=*b++;//从a的末尾逐个赋值b
    }
}

void my_strstr(const char *a,const char *b)//判断a中是否有b
{
    int k=0;
    while((*a!='\0')&&(*(b+k)!='\0'))//直到a的末尾结束循环或查找到b的末尾
    {
        if(*a==*(b+k))//如果当前a的值等于b的值
        {
            k++;//k的值表示a中有b字符的个数
        }else k=0;//当有字符不连续相同时,k=0,从头开始计算k
        a++;
    }//原理:遍历a中是否有b的第0个字符,若有k=1,检查a的下一个字符
    //拿a的下一个字符与b的第1个字符比较,若相同则继续
    //出现一个不同则k=0,从头计算,直到a末尾,判定k的值
    if(k>0){
        printf("有\n");
    }else printf("没有\n");
}

int main(int argc, char const *argv[])
{
    char arr[100]="";
    char brr[100]="";
    printf("请输入一条字符串\n");
    gets(arr);
    printf("请输入另一条字符串\n");
    gets(brr);
    printf("长度为%d\n",my_strlen(arr));
    //my_strcpy(arr,brr);
    //printf("%s\n%s\n",arr,brr);               //检查其它函数时//掉赋值函数
    printf("比大小结果为:%d\n",my_strcmp(arr,brr));
    my_strcat(arr,brr);
    printf("字符串2加到字符串1后面:%s\n",arr);
    my_strstr(arr,brr);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值