用户给我们一个较长的字符串s
和一个较短的字符串t
。
如果t
在s
中,其中字符串?
中的符号t
可以用作任何字符,则显示一条消息。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isit(char*,char*,int);
int main()
{
char s[20],t[20];
int k,i,fir;
puts("Enter first string");
gets(s);
puts("Enter second string");
gets(t);
k=strlen(s)-strlen(t);
for(i=0;i<=k;i++){
fir=i;
if(isit(s,t,fir)==1){
printf("It's in there");
return 1;
}
}
}
int isit(char*s,char*t,int fir){
int i;
for(i=fir;i<i+strlen(t)-1;i++)
if(t[i]!=s[i] && t[i]!='?')
return -1;
return 1;
}
最佳答案
问题出在函数isit()
1)在isit()
中检查字符串时。t
和s
的指数必须不同对于s
它必须从fir
开始,但是对于t
它必须从0
开始。
2)您不需要在终止条件检查中执行-1
,因为您已经在使用<
,而不是<=
3)您需要将终止条件更改为i<fir+strlen(t)
,因为i
在每次迭代时都在更改,这将使终止条件失效
将代码更改为
int isit(char*s,char*t,int fir){
int i, j;
for(i=fir, j=0; i<fir+strlen(t); i++, j++)
if(t[j]!=s[i] && t[j]!='?')
return -1;
return 1;
}