?
we wzorze ma oznaczać zgodność z dowolnym znakiem w łańcuchu, znak *
z dowolnym ciągiem znaków w łańcuchu. Funkcja mi nie działa tylko w przypadku, gdy jest więcej tych gwiazdek a za nimi liter, na przykład *b*b
, ponieważ w moim pomyśle jedyne co wpadło mi na myśl gdy jest na przykład ta pierwsza literka b
żeby pętlą while poszukać ostatniego wystąpienia tej wartości, wtedy poprawny ciąg ssbb
mi nie zadziała. Wklejam poniżej kod i prosiłbym o jakieś wskazówki czym mogę to poprawnie zrobić.Kod: Zaznacz cały
bool match(char *pattern, char *chain)
{
int a,b;
a = strlen(pattern);
b = strlen(chain);
int i=0, j=0;
while(i<a)
{
if(pattern[i] == '*')
{
if(i+1 == a)
break;
else
{
int temp = j, temp1 = j;
while(temp < b)
{
if(chain[temp] == pattern[i+1])
j = temp;
temp++;
}
if(temp == temp1)
{
printf("F\n");
return false;
}
++i;
}
}
else
{
if(pattern[i] == '?')
{
++i;
++j;
}
else
{
if(pattern[i] == chain[j])
{
++i;
++j;
}
else
{
printf("F\n");
return false;
}
}
}
}
printf("T\n");
return true;
}