c语言 定义一个函数,判断某字符串中是不是包含一个子串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 定义一个函数,判断某字符串中是不是包含一个子串相关的知识,希望对你有一定的参考价值。

int find(char* source, char* target)//source为源字符串,target为子字符串,如找到则返回在源串中的位置,如未找到则返回-1,如果要改为找到返回1,把return i改为return 1;

    int i,j;
    int s_len=strlen(source);
    int t_len=strlen(target);
    if(t_len>s_len)
    
        return -1;
    
    for(i=0;i<=s_len-t_len;i++)
    
        j=0;
        int flag=1;
        if(source[i]==target[j])
        
            int k,p=i;
            for(k=0;k<t_len;k++)
            
                if(source[p]==target[j])
                
                    p++;
                    j++;
                    continue;
                
                else
                
                    flag=0;
                    break;
                
            
        
        else
        
            continue;
        
        if(flag==1)
        
            return i;
        
    
    return -1;

参考技术A

其实就是C 库函数strstr

char *strstr(const char *s1, const char *s2)

    size_t l1, l2; 

    l2 = strlen(s2);
    if (!l2)
        return (char *)s1;
    l1 = strlen(s1);
    while (l1 >= l2) 
   
        l1--;
        if (!memcmp(s1, s2, l2))
            return (char *)s1;
        s1++;
    
    return NULL;

C语言定义一个函数,判断字符串中是不是包含另一个子串!!!!!!急

C语言定义一个函数,判断字符串中是否包含另一个子串!!!!!!急C语言的,帮忙写。给奖励很多

调用strstr()函数就可以实现

#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;

追问

能自己输入么

追答#include <string.h>
#include <stdio.h>
 
int main()

    char s[100];
    char s1[100];
 
     printf("input s:");
     gets(s);
     printf("input s1:");
     gets(s1);
    if ( strstr(s,s1) )
    
        printf("ok\\n");
    
    else
    
        printf("no\\n");
    
    return 0;

追问

谢谢

参考技术A #include <stdio.h>
char *mystrstr(char *s1,char *s2);
int main(void)

char s1[]="123456789",s2[]="123";
if(mystrstr(s1,s2)!=NULL)

puts("YES");

else

puts("NO");

return 0;

char *mystrstr(char *s1,char *s2)

char *p,*q;
for(;*s1;s1++)

if(*s1==*s2)

for(p=s1,q=s2;*q&&*p==*q;p++,q++);
if(!*q)

return s1;



return NULL;

追问

用scanf自己输入的

以上是关于c语言 定义一个函数,判断某字符串中是不是包含一个子串的主要内容,如果未能解决你的问题,请参考以下文章

C语言定义一个函数,判断字符串中是不是包含另一个子串!!!!!!急

怎样用C语言编写程序判断字符串S1是不是包含字符串S2.(不使用库函数)

C语言如何判断某一年是不是是闰年

C语言. 编写函数,判断在给定字符串中是不是包含指定的子串

c语言中判断一个字符串是不是包含另一个字符串

如何判断一个字符串中是不是包含另一个字符串