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

相关推荐
序属秋秋秋1 小时前
《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
开发语言·c++·笔记·学习
ruan1145142 小时前
MySQL4种隔离级别
java·开发语言·mysql
quant_19863 小时前
R语言如何接入实时行情接口
开发语言·经验分享·笔记·python·websocket·金融·r语言
啟明起鸣6 小时前
【网络编程】简易的 p2p 模型,实现两台虚拟机之间的简单点对点通信,并以小见大观察 TCP 协议的具体运行
c语言·网络·tcp/ip·p2p
百锦再7 小时前
详细解析 .NET 依赖注入的三种生命周期模式
java·开发语言·.net·di·注入·模式·依赖
风吹落叶花飘荡7 小时前
2025 Next.js项目提前编译并在服务器
服务器·开发语言·javascript
失败又激情的man8 小时前
python之requests库解析
开发语言·爬虫·python
专注VB编程开发20年8 小时前
常见 HTTP 方法的成功状态码200,204,202,201
开发语言·网络协议·tcp/ip·http
有没有没有重复的名字8 小时前
线程安全的单例模式与读者写者问题
java·开发语言·单例模式
开开心心_Every9 小时前
便捷的电脑自动关机辅助工具
开发语言·人工智能·pdf·c#·电脑·音视频·sublime text