6个回答
展开全部
你的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");
}
}
展开全部
#include <stdio.h>
int len(const char* str)
{
int len = 0;
while (*str++ != 0) ++len;
return len;
}
int substr(const char* src, const char* target)
{
int i = 0;
int j = 0;
int pos = -1;
int src_len;
int target_len;
if (!src || !target) return pos;
src_len = len(src);
target_len = len(target);
if (target_len > src_len) return pos;
while (i < src_len && j < target_len)
{
if (target[j] == src[i])
{
i++;
j++;
}
else
{
i = i - j + 1;
j = 0;
}
}
if (j == target_len)
{
pos = i - target_len;
}
return pos;
}
void main(void)
{
char a[100], b[100];
gets(a);
gets(b);
printf(substr(a, b) < 0 ? "NO" : "YES");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询