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语言定义一个函数,判断字符串中是不是包含另一个子串!!!!!!急