ciao a tutti
ho creato un programma che crea una lista di tipo LIFO , e che scrive la stessa in un file binario
ora questo programma è strutturato in questo modo :
codice:
typedef struct meteo
{
char nome [12] ;
int numero ;
struct meteo *next ;
}meteo ;
typedef meteo *meteoPtr ;
in pratica la lista prevede che ogni nodo abbia una stringa (nome) e un numero identificativo
ora agendo in questa maniera
codice:
do {
fprintf(stdout , "digita 0 per finire \n" ) ;
fscanf (stdin , "%d" , &i ) ;
Testa = crea (Testa ) ;
n++ ; /* contatore numero nodi */
} while ( i != 0 ) ;
e richiamando la funzione "crea"
codice:
meteoPtr crea (meteoPtr *l )
{
meteoPtr nuovo ; /* creo un nuovo nodo */
nuovo = (meteoPtr*) malloc (sizeof (meteo) ) ;
nuovo->numero = 1 + rand () % 100 ;
fgets (nuovo->nome , 10 , stdin ) ;
nuovo->next = l ;
return nuovo ;
}
il programma qualora digito 0 subito , mi genera un numeo casuale , ma ignora
la funzione fgets (per la creazione di stringa)
e in ogni caso , genera sempre un valore ( numero casuale) , superiore al numero
di stringhe presenti , come se "l'ultima volta" ignorasse fgets
qualcuno mi sa spiegare perchè?
grazie