FFLUSH

di il
1 risposte

FFLUSH

In un programma ho trovato definita questa costante
#define FFLUSH while(getchar()!='\n')
poi utilizzata in questa funzione
void LeggiStringa(char s[],unsigned long dim){
 unsigned long i=0;

 for (i=0; i<dim-1;i++)
 if ((s[i]=getchar())=='\n') break;
 if (i==dim-1) FFLUSH;
 s[i]='\0';
}
non riesco a capire come lavora la funzione da if (i==dim-1) in poi, qualcuno può aiutarmi?

1 Risposte

  • Re: FFLUSH

    Il codice andrebbe indentato un pò meglio...
    Comunque, in sostanza, con il for leggi al massimo dim-1 caratteri (e li piazzi nell'array alle posizioni da 0 a dim-2) e ti fermi quando incontri un newline '\n'.
    Leggi al massimo dim-1 caratteri perchè devi lasciare spazio al terminatore di stringa.
    Dal for puoi uscire in due modi:
    a) l'utente ha dato un newline
    b) abbiamo raggiunto dim-1 caratteri
    Nel caso b) l'utente sta inserendo troppi caratteri e li devi leggere per scartarli, altrimenti verranno inseriti eventualmente in successive letture; il caso b) si riconosce quando esci con i==dim-1; questo ti spiega la if che segue.
    In entrambi i casi termini la stringa utilizzando l'indice i; nel caso a) sovrascrivi il newline mentre nel caso b) scrivi nell'ultimo carattere s[dim-1].
Devi accedere o registrarti per scrivere nel forum
1 risposte