ciao raga...

come primissima parte di un progettino in C dovevo fare una funzione che preso il puntatore ad un file ed il puntatore ad una stringa memorizzi in ques'ultimo spazio di memoria la prima parola trovata nel file che non sia costituita da soli numeri (quindi lettere e numeri va bene) minuscolizzata, e restituisca la dimensione della parola trovata o zero se il file è finito....tutto usando solo le funzioni che uso io.. niente librerie strane..

va bene questa mia implementazione?
è migliorabile?
può avere problemi?

tnx

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
}