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 :
in pratica la lista prevede che ogni nodo abbia una stringa (nome) e un numero identificativocodice:typedef struct meteo { char nome [12] ; int numero ; struct meteo *next ; }meteo ; typedef meteo *meteoPtr ;
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

Rispondi quotando
).

