【发布时间】:2015-10-31 09:54:24
【问题描述】:
用户给我们更长的字符串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;
}
【问题讨论】:
-
不要使用
gets(),它已被弃用。请改用fgets()。顺便说一句,问题是什么? -
如果s='straga' and t='aga',那么t位于s中,应该显示确认
-
@Desperado 你遇到了什么问题?
-
添加到@Haris 的评论:永远不要使用
gets()!它不仅已被弃用,而且出于strong 的原因而被弃用——它最终会溢出任何 缓冲区,因此存在安全风险。 -
@sureshkumar 这正是我的第一个想法,但请阅读问题:它不符合要求,因为为任何字符定义了一个占位符。