题目是:输入两个字符串,输出字符串1中与字符串2最先匹配的内容,字符串2中可包含?,?可代表任何字符。已知字符串2不会全为?。
输入输出格式:输入:abcdefabcdeg,a?c??f
输出:abcdef
下述代码可运行出题目中的例子,但测评显示答案错误,是哪里错了,还望大神们指教!
#include <stdio.h>
int main()
{
char str1[129],str2[129],*p1,*p2,c,str[129],*p3;
p1=str1;
p3=str;
while(1)
{
c=getchar();
if(c==',')
{
(*p1)='\0';
break;
}
(*p1)=c;
p1++;
}
gets(str2);
for(p1=str1,p2=str2;((*p1)!='\0')&&((*p2)!='\0');p1++)
{
if(((*p1)==(*p2))||((*p2)=='?'))
{
*(p3++)=(*p1);
p2++;
}
else if(((*(p1-1))==(*(p2-1)))||((*(p2-1))=='?'))
{
p2=str2;
p3=str;
continue;
}
}
if((*p2)=='\0')
{
(*p3)='\0';
puts(str);
}
putchar(10);
return 0;
}