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

2024-11-23 04:39:26
推荐回答(3个)
回答1:

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

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

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

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

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

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

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

回答2:

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

#include 
#include 
main() {
 char a[100],b[100];
 int i,j,f=0;
 gets(a);//cde
 gets(b);//aabbcdefghbcd
 for(i=0;i  if(b[i]==a[0]){
   for(j=1;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 
#include 
main() {
 char a[100],b[100];
 gets(a);
 gets(b);
 if(strstr(b,a)!=NULL){//第2个参数第1个参数的子串 
  printf("YES");
 }else{
  printf("NO");
 }
}

回答3:

string.h 
strstr函数 
函数名: strstr 
功 能: 在串中查找指定字符串的第一次出现 
用 法: char *strstr(char *str1, char *str2); 
说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL。 

调用函数,判断返回值是否等于NULL,决定是否输出:
 
#include 
#include 
 
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;
}