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

相关推荐
qq_401700414 小时前
Qt 项目中使用 QSS 的全面总结
开发语言·qt
浩浩测试一下4 小时前
汇编 标志位寄存器 (逆向分析 )
c语言·汇编·逆向·windows编程·标志寄存器
玖釉-5 小时前
C++ 中的循环语句详解:while、do...while、for、嵌套循环与循环控制
开发语言·c++·算法
XMYX-05 小时前
37 - Go env 环境变量:配置管理与运行时控制
开发语言·golang
一楼的猫5 小时前
从文本特征分析看网文平台AI检测:3个被忽视的指标
开发语言·人工智能·学习方法·ai编程·ai写作·ai自动写作
SuperByteMaster5 小时前
uart中断发送和接收处理
c语言
yuan199975 小时前
基于MATLAB的梁非线性动力学方程编程实现框架
开发语言·matlab
Xin_ye100865 小时前
C# 零基础到精通教程 - 第十一章:LINQ——语言集成查询
开发语言·c#
欧米欧5 小时前
C++进阶数据结构之搜索二叉树
开发语言·数据结构·c++
Xin_ye100865 小时前
C# 零基础到精通教程 - 第十章:集合与泛型——高效管理数据
开发语言·c#