C语言判断一个字符串是否是另一个字符串的子串

 我来答
百度网友faadf46
高粉答主

2020-02-05 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:75万
展开全部

1、首先,定义两个整型变量,保存判断的数和同构串计数。

2、定义3字符串变量,保存用来判断的同构字符串和用来判断包含多少同构字符串的字符串,以及字符串的子串。

3、定义两个整型变量,保存同构字符串中所有字母的数量。

4、重置数组n的值,初值为0。

5、判断字符串的子串,是否为同构子串。

6、如果子串是同构子串,则统计值自加1。

7、运行程序,输入两个字符串后,电脑就会统计出所有同构子串的数量。

WMYUOM
2019-05-19 · TA获得超过350个赞
知道小有建树答主
回答量:435
采纳率:78%
帮助的人:209万
展开全部

你的if语句后面再加个if语句判断f是否等于1,等于1就不用循环了。你没判断,后面的字符又把你的1改回0了。修改后代码如下

#include <stdio.h>
#include <string.h>
main() {
 char a[100],b[100];
 int i,j,f=0;
 gets(a);//cde
 gets(b);//aabbcdefghbcd
 for(i=0;i<strlen(b);i++){
  if(b[i]==a[0]){
   for(j=1;j<strlen(a);j++){
    if(a[j]==b[i+j]){
     f=1;
     continue;
    }else{
     f=0;
     break;
    }
   }
  }
  if(f==1){
   break;
  }
 }
 if(f==1)
 printf("YES");
 else
 printf("NO");
}

使用库函数strstr

#include <stdio.h>
#include <string.h>
main() {
 char a[100],b[100];
 gets(a);
 gets(b);
 if(strstr(b,a)!=NULL){//第2个参数第1个参数的子串 
  printf("YES");
 }else{
  printf("NO");
 }
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2018-05-27 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
string.h 
strstr函数 
函数名: strstr 
功 能: 在串中查找指定字符串的第一次出现 
用 法: char *strstr(char *str1, char *str2); 
说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL。 

调用函数,判断返回值是否等于NULL,决定是否输出:
 
#include <string.h>
#include <stdio.h>
 
int main()
{
    char s[]="12345678";
    char s1[]="135";
    char s2[]="567";
 
    if ( strstr(s,s1) )
    {
        printf("ok\n");
    }
    else
    {
        printf("no\n");
    }
//--以上显示no
    if ( strstr(s,s2) )
    {
        printf("ok\n");
    }
    else
    {
        printf("no\n");
    }
//--以上显示ok
    return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式