C语言 设计函数,接收两个字符串,判断第二个字符串是否为第一个字符串的子符串。【提示】第二个字符串的内容全部在第一个字符串中

cpp 复制代码
#include <stdio.h>
int mystrlen(char *str)
{
    int length = 0;
    while(*str != '\0')
    {
        str++;
        length++;
    }
    return length;
}
int array (char *str01,char *str02)
{
    int length1 = mystrlen(str01);
    int length2 = mystrlen(str02);
    int x = 0;
    for (int i = 0; i < length1-length2+1; i++)
    {
        for (int j = 0; j < length2; j++)
        {
            if(str01[i+j] == str02[j])
            {
                x++;
                if(x == length2)
                {
                    printf("%s包含%s\n",str01,str02);
                    return ;
                }
            }
            else{
                x = 0;
            }
        }
    }
    printf("%s不包含%s\n",str01,str02) ;
}
int main(int argc, char const *argv[])
{
    char *str01 = "helloworld";
    char *str02 = "hello";
    int length1 = mystrlen(str01);
    printf("length1 = %d\n",length1);
    int length2 = mystrlen(str02);
    printf("length2 = %d\n",length2);
    array(str01,str02);
    return 0;
}

提示:

唯一难点

外层循环范围等于大数组的长度减去小数组的长度+1,含义是:首先是大数组长度减去小数组长度是为了和小数组长度是为了保证每次大数组和小数组比较的长度一致,如果长度不一致,肯定就不同,就不是大数组中包含的内容了,(如果不减length2的话,那比到大数组的后一位,就不够小数组的长度,二者就比不了),+1是为了可以取到下一位。

相关推荐
无限的鲜花6 小时前
反射(原创推荐)
java·开发语言
yongche_shi6 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
一路向北he6 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
AI行业学习8 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
大圣编程8 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
upgrador9 小时前
基础知识:C++ STL构造函数的左闭右开惯例及其实现原理
开发语言·c++
灯厂码农10 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
yoothey10 小时前
报废审批流规则引擎设计——责任链模式完整实现
linux·开发语言·bash
geovindu10 小时前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式
wuyk55510 小时前
24. C 语言模块化:不是拆几个.c 文件那么简单
c语言·开发语言·stm32·单片机