Smanettone ha scritto:
int contaParole(char *a, char *b)
Ciao
Grazie per avermi risposto. Quello che succede, però, è questo.
Se scrivo un piccolo programma di test come quello seguente, la funzione "
funziona".
#include <stdio.h>
#include <string.h>
#define BUFLEN 100
int contaParole(char *a, char *b);
int main()
{
int occur;
char stringa[BUFLEN] = "prova1 prova2 prova3 prova4 prova5";
char parola[20] = "prova";
occur = contaParole(stringa,parola);
printf("Il numero di occorrenze e' %d\n",occur);
sleep(3);
}
Mi vengono ritornate esattamente 5 occorrenze.
Se invece, lancio la funzione da un'altra funzione (come dovrebbe essere nel mio caso) mi viene ritornato sempre 0. La funzione chiamante è questa:
int contaOccorrenze(TipoLista l, char *buf)
{
int n = 0;
int occ = 0;
while (l != NULL)
{
occ = contaParole(l->dato, buf);
n = n + occ;
l = l->next ;
}
return(n) ;
}
E' abbastanza evidente che si tratta di leggere sequenzialmente una lista di stringhe, per ognuna delle quali usando contaParole si calcola il numero di occorrenze della parola cercata.
Alla fine dovrei avere il numero totale di occorrenze della parola nella lista.
Ho inserito in
in contaParole un banale printf per testare i valori passati di
a e
b e
sono giusti, però non funge.
E' un mistero.
Cosa ne pensi?
Saluti cordiali