Napisz funkcję match(char* wzorzec, char* łańcuch), która ustala zgodność wzorca z łańcuchem. Znak '?' we wzorcu oznacza zgodność z dowolnym innym znakiem. Znak ''(gwiazdka, nie wiem czemu nie widać) oznacza zgodność z dowolnym, również pustym, ciągiem znaków w łańcuchu. Znak różny od '?' i '' oznacza zgodność tylko z samym sobą.
#include <stdio.h>
#include <string.h>
int match(char* wzorzec, char* lancuch)
{
int poprawnosc = 1;
int i, j;
for(i = 0, j = 0; i < strlen(lancuch); i++, j++)
{
if(wzorzec[j] == '?')
{
continue;
}
if(wzorzec[j] == '*')
{
while(lancuch[i] != wzorzec[j+1])
{
i++;
}
j++;
}
if(lancuch[i] != wzorzec[j] || strlen(lancuch) < strlen(wzorzec))
{
poprawnosc = 0;
break;
}
}
return poprawnosc;
}
int main()
{
char wzorzec[1000];
char lancuch[1000];
int poprawnosc;
printf("Podaj wzorzec\n");
scanf("%s", &wzorzec);
printf("Podaj lancuch\n");
scanf("%s", &lancuch);
poprawnosc = match(wzorzec, lancuch);
if(poprawnosc == 1)
{
printf("Lancuch jest zgodny z wzorcem.");
}else
{
printf("Lancuch nie jest zgodny z wzorcem.");
}
return 0;
}
Opiszę na przykładzie mój problem. Weźmy wzorzec *.doc. Program będzie dobrze weryfikował czy łańcuch jest zgodny ze wzorcem dopóki nie będę używał '.' w łańcuchu, tj. dasdsa.doc stwierdzi, że łańcuch jest zgodny ze wzorcem, natomiast sdasd.dsadsa.doc program stwierdzi, że łańcuch nie jest zgodny ze wzorcem. I z tym potrzebuje pomocy. Myślę bardzo długo jakby napisać program by działał właściwie, lecz na nic nie mogę wpaść. :/