编写函数判断B是不是A的子串(假设A的长度大于B的长度,且两个字符串都不超过100个字符)。 CQUPT题库

该博客介绍如何在C语言中编写一个函数,用于判断字符串B是否为字符串A的子串,假设A的长度大于B,且字符串长度不超过100。要求不使用库函数。博客提供了一个主函数示例,接收用户输入并输出判断结果‘YES’或‘NO’。
摘要由CSDN通过智能技术生成

编写函数判断B是不是A的子串(假设A的长度大于B的长度,且两个字符串都不超过100个字符)。注意:串中任意个连续的字符组成的子序列称为该串的子串。
主函数中输入两个字符串,并调用上述函数判断,然后在主函数中输出”YES”,或者”NO”。
提示:不能使用库函数。

输入提示信息:“Please input the first str:”
输入格式:"%s"
输入提示信息:“Please input the second str:”
输入格式:"%s"
输出格式:“YES\n” “NO\n”
程序测试用例1:
Please input the first str: Abcdefghijk123
Please input the second str: def
YES
程序测试用例2:
Please input the first str: abc123ef
Please input the second str: df
NO

#include <stdio.h>
#include <string.h>
#define MAXS 80

char *search(char *s, char *t);

int main()
{
    char s[MAXS], t[MAXS], *pos;
    printf("Please input the first str:");     //第一个字符串长 
    gets(s);
    printf("Please input the second str:");      //第二个字符串短 
    gets(t);
    pos = search(s, t);
    if (pos != NULL)
        printf("YES\n" );
    else
        printf("NO\n");

    return 0;
}
char *search(char *s, char *t)
{
    int i, j, k = 0, slen, tlen;
    char *p = NULL;                  //原本P是一个空指针 

    slen = strlen(s);               //得到两个字符串的长度 
    tlen = strlen(t);               
    for (i = 0; i < slen; i++)          
    {
        j = i;                                  
        while (s[j] == t[k])      //如果主串从第j开始和副串开始重合,就之一检验重合        
        {
            k++;
            j++;
        }
        if (k >= tlen)             //如果重合的次数就为副串长度,那么就是其子串 
        {
            p = &s[i];                    //p就有地址了!! 
            return p;
        }
        k = 0;
    }

    return p;
}
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值