PDA

Visualizza la versione completa : [C] Operazioni su file e ciclo infinito


ilmo lesto
08-02-2007, 12:50
premessa: spero in qualche anima pia che abbia voglia di perdere 5 minuti per aiutarmi.

ho iniziato ad operare sui file in C.
lascio da parte le 2000-3000 domande che avrei da fare e vengo subito al dunque.

ho scritto questo programmino che dovrebbe leggere e scrivere da file aggiornando i record dei vari clienti.

ovviamente l'implementazione poteva essere fatta molto meglio (per esempio usare file ad accesso casuale invece che utilizzare file ad accesso sequenziale come ho fatto io)

ma era appunto un'esercitazione e mi serviva per capire meglio alcune cose.

il programma parte con un men che ti fa scegliere l'operazione da compiere.
si d per scontato che il file con i record dei clienti sia gi stato creato in precedenza.
ogni record composto semplicemente dal numero di conto del cliente + nome + il suo saldo attuale.

attraverso il programma puoi:
1-visualizzare le informazioni del file (oldmast.dat) che contiene tutti i record dei clienti
2-aggiornare il record dei clienti (oldmast.dat) con il file delle transazioni (trans.dat)
3-creare un file (trans.dat) dove inserire tutte le transazioni effettuate da ciascun cliente in un determinato arco di tempo
4-uscire


il problema si pone quando cerco di scrivere sul file delle transazioni (scelta menu numero 3).

infatti il file mi viene scritto, esco dalla funzione e mi ritrovo in un ciclo infinito quando si tratta di riselezionare la nuova scelta del menu: come se lo scanf utilizzato per la scelta dell'opzione nel men, mi leggesse qualcosa rimasto nello stdin e quindi io non posso pi inserire nulla da tastiera

vi posto il codice e anche l'output finale

per vedere il codice andate qui:

http://nopaste.simosnap.com/2003

e questo l'output finale:

http://img377.imageshack.us/img377/1668/outputes117to4.th.jpg (http://img377.imageshack.us/my.php?image=outputes117to4.jpg)



programmo con gli xcode su OS X.4.

grazie.

ilmo lesto
08-02-2007, 17:21
vorrei aggiungere che ho gi provato a mettere un

fflush(stdin)

prima dello scanf

ma non funziona...

oregon
08-02-2007, 17:32
Prova a metterle la fflush dopo la scanf ...

ilmo lesto
08-02-2007, 17:45
ho provato a mettere fflush un po' da tutte le parti, ma non c' niente da fare...

non vorrei che centri qualcosa con il carattere EOF, magari l'ho gestito male... solo che non ho idee a riguardo...

Loading