指针 7.12 day10

1、自定义函数(my_strlen)实现strlen函数的功能

#include "stdio.h"

int str_len(char *arr)
{
    if(*arr=='\0')    //如果字符串为空,则长度为0
    {
        return 0;
    }
    
        return 1+str_len(1+arr);  //递归
    
}

int main(int argc, char const *argv[])
{
    char arr[100];
    int len=0;
    printf("请输入一个字符串:");
    gets(arr);
 
    int result=str_len(arr);
    printf("该字符串长度为: %d\n",result);
    return 0;
}

 2、自定义函数(my_strcpy)实现strcpy函数的功能

#include <stdio.h>

// 自定义函数实现 strcpy 的功能
void my_strcpy(char *dest, char *src) {
    char *d = dest;
    char *s = src;
    while ((*d++ = *s++) != '\0');
    return dest;
}

int main() {
    char *src[100] ;
    printf("请输入要复制的字符串:");
    gets(src);
    char dest[50]=""; 
    printf("请输入被复制的字符串:");
    gets(dest);
    printf("源字符串dest: %s\n", dest);

    my_strcpy(dest, src);
    
    printf("复制后的字符串dest: %s\n", dest);
    
    return 0;
}

3、自定义函数(my_strcmp)实现strcmo函数的功能

#include "stdio.h"

int my_strcmp( char *str1,  char *str2) {
     char *s1 = ( char *)str1;
     char *s2 = ( char *)str2;
    
    while (*s1 && (*s1 == *s2)) {
        s1++;
        s2++;
    }
    
    return *(char *)s1 - *(char *)s2;
}

int main(int argc, char  *argv[])
{
    char str1[100];
    char str2[100];
    printf("请输入字符串一:");
    gets(str1);
    printf("请输入字符串二:");
    gets(str2);

    int result=my_strcmp(str1,str2);

    if(result>0)
    {
        printf("字符串一大\n");
    }else if(result<0)
    {
        printf("字符串二大\n");
    }else
    {
        printf("一样大\n");
    }
    return 0;
}

4、自定义函数(my_strcat)实现strcat函数的功能

#include <stdio.h>

// 自定义函数实现 strcat 的功能
void my_strcat(char *str1,  char *str2) {
    char *x = (char *)str1;
     char *y = ( char *)str2;

    // 找到目标字符串的末尾
    while (*x) {
        x++;
    }

    // 将源字符串复制到目标字符串末尾
    while ((*x++ = *y++) != '\0');
}

int main(int argc, char  *argv[])
{
    char str1[100];
    char str2[100];
    printf("输入字符串:");
    gets(str1);
    printf("输入要拼接的字符串:");
    gets(str2);

    my_strcat(str1,str2);

    printf("拼接后的字符串:%s\n",str1);
    return 0;
}

5、自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串

#include <stdio.h>

// 自定义函数实现 strstr 的功能
void* my_strstr( void *src,  void *dest) {
     char *s = ( char *)src;
     char *d = ( char *)dest;

    if (!*d) {
        return (void *)s; // 如果子串为空,返回源字符串
    }

    while (*s) {
         char *s1 = s;
         char *d1 = d;

        // 比较源字符串中的一段和子串
        while (*s1 && *d1 && (*s1 == *d1)) {
            s1++;
            d1++;
        }

        // 如果子串全部匹配完,则返回匹配的起始位置
        if (!*d1) {
            return (void *)s;
        }

        s++;
    }

    return NULL; // 未找到子串,返回 NULL
}

int main() {
    char src[100]; // 源字符串数组
    char dest[50]; // 子串数组

    // 提示用户输入源字符串
    printf("请输入字符串: ");
    gets(src);

    // 提示用户输入子串
    printf("请输入子串: ");
    gets(dest);

    // 使用自定义函数查找子串
    char *result = my_strstr(src, dest);

    if (result) {
        printf("子串在字符串中的位置: %ld\n", result - src);
    } else {
        printf("不包含子串\n", dest);
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值