int getWord(FILE *fp, char *word)
{
#define IS_LETTER ((current >= 'a' && current <= 'z') || (current >= 'A' && current <= 'Z'))
#define IS_NUMBER (current >= 0 && current <=9)
char current;
int i,j,valida = 0;
while(!valida) //se la parola noon è stata trovata o non è valida cerca una nuova parola
{
//controlla la fine del file restituendo eventualmente 0
//ed elimina implicitamente i caratteri non validi portando avanti il puntatore
if((current = getc(fp)) == EOF) return 0;
i=0; //contatore dei caratteri della parola resettato ogni volta che si cerca una nuova parola
while(IS_LETTER || IS_NUMBER)
//quando incontra per la prima volta un carattere valido entra nel ciclo e "costruisce" la parola
//se il carattere o la parola trovata non sono validi si torna alla lettura fuori dal ciclo
{
if(valida == 0 && IS_LETTER) valida = 1; //segnala che la parola non è di soli numeri
word[i++] = current;
current = getc(fp);
}
}
for(j=0;j<i;j++) word[j] = tolower(word[j]); //minuscolizza la parola trovata
word[i] = '\0'; //appende il carattere di terminazione delle stringhe alla parola trovata
return i; //restituisce la lunghezza della parola trovata
}