Ciao ragazzi.
Sono alle prese con un esercizio sullo string matching.
Ho scritto il codice solo che non riesco a capire come funzioni siccome alcune volte mi ritrova l'occorrenza e le altre volte no...
Tipo se scrivo ita mi ritrova la prima occorrenza, se metto Nel non mi ritrova niente...
Cos'è che non va?
L'esercizio mi chiede di ricercare la prima occorenza in una stringa senza usare strstr().
Ecco il codice:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PAT 10
int src_occorrenza (char testo[], char pattern[]);
int main()
{
int i;
int ch;
char pattern[MAX_PAT];
char testo[] = "Nel mezzo del cammin di nostra vita\n"
"Mi ritrovai per una selva oscura\n"
"Che la diritta via era smarrita\n";
printf("Programmazione II - Esercizio 24\n\n");
printf("\t***TESTO***\n");
printf("%s\n\n", testo);
printf("Inserisci il pattern che vuoi ricercare nel testo\n");
gets(pattern);
ch = src_occorrenza(testo, pattern);
if(ch == -1)
{
printf("\nNon e' stato trovata nessuna occorrenza nel testo con il pattern immesso\n");
} else
{
printf("\nIl tuo pattern %s coincide con\n", pattern);
for(i=0;i<strlen(pattern);i++)
{
printf("%c(posizione %d)\n", testo[ch+i], ch+i);
}
}
return 0;
}
int src_occorrenza (char testo[], char pattern[])
{
int len_p, len_t;
int it=0,ip=0, itt;
int uguali;
len_p = strlen(pattern);
len_t = strlen(testo);
while(it < len_t)
{
if(testo[it] == pattern[ip])
{
uguali++;
itt = it+1;
ip = ip+1;
while (itt < len_t && ip < len_p && uguali)
{
if(testo[itt] == pattern[ip])
{
uguali++;
} else
{
uguali = 0;
}
itt++;
ip++;
}
if(uguali == len_p)
{
return it;
}
}
ip = 0;
it++;
}
return -1;
}
Intanto provo a perderci un altro pò di tempo...mmm