C语言作业7 指针实现strlen,strcpy,strcmp和strstr功能

1、自定义函数(my_strlen)实现strlen函数的功能
2、自定义函数(my_strcpy)实现strcpy函数的功能
3、自定义函数(my_strcmp)实现strcmp函数的功能
4、自定义函数(my_strcat)实现strcat函数的功能
5、自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串

#include <stdio.h>

// 求字符串长度
int my_strlen(char *arr)
{
    int sum = 0;
    while (*arr)
    {
        sum++;
        arr++;
    }
    return sum;
}

// 拷贝字符串
void my_strcpy(char *arr, char *brr)
{
    while (*arr)
    {
        *brr = *arr;
        brr++;
        arr++;
    }
    *brr = '\0';
}

// 比较字符串
int my_strcmp(char *arr, char *brr)
{
    while (*arr && (*arr == *brr))
    {
        arr++;
        brr++;
    }
    return *arr - *brr;
}

// 查看字符串里是否包含子字符串
char *my_strstr(char *arr, char *brr)
{
    if (!*brr)
    {
        return arr;
    }

    while (*arr)
    {
        if (*arr == *brr)
        {
            char *a = arr;
            char *b = brr;
            while (*b)
            {
                if (*a++ != *b++)
                {
                    break;
                }
            }
            if(!*b)
            {
                return arr;
            }
        }
        arr++;
    }
    return NULL;
}

int main(int argc, char const *argv[])
{
    char src[100] = {"0"};
    char ret_src[100] = {"0"};
    char dest[100] = {"0"};
    printf("请输入一个字符串:");
    gets(src);

    // 求字符串长度
    int retval_my_strlen = my_strlen(src);
    printf("该字符串的长度是:%d\n\n", retval_my_strlen);

    // 拷贝字符串
    my_strcpy(src, ret_src);
    printf("拷贝后新的字符串retsrc = %s\n\n", ret_src);

    // 比较字符串
    printf("请再输入一个字符串:");
    char src1[100] = {"0"};
    gets(src1);
    int retval_my_srccmp = my_strcmp(src, src1);
    printf("该字符串和原字符串比较得出:%d\n\n", retval_my_srccmp);

    
    printf("请再输入一个字符串:");
    gets(dest);
    char *retval_my_strstr = my_strstr(src,dest);
    printf("返回判断值:%s\n",retval_my_strstr);
    return 0;
}

 输出结果如下:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值