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是为了可以取到下一位。

相关推荐
yaoxin5211234 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫4 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp4 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的5 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉5 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉5 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
凡人叶枫6 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员6 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean6 小时前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务
LabVIEW开发7 小时前
LabVIEW + MATLAB 混合编程:爆炸场测试数据精准采集方案
开发语言·matlab·labview