PDA

Visualizza la versione completa : [C] Lettura di file con ciclo e condizioni


JVins
07-12-2006, 16:51
Ciao a tutti , io avrei un piccolo problema e sussiste in questo , sto leggendo un file con fscaf dentro un ciclo for , dentro di esso c'è un if che quando si verifica esce dal ciclo poi subito dopo che esce dal ciclo for, devo andare ha leggere la riga precendente del file , ha quando si e verificata l'uscita dal for, qualcuno di voi sa come fare? e molto urgente

oregon
07-12-2006, 17:05
Sarà urgente ma non si è capito nulla ...

Rispiega e fai vedere il codice ...

JVins
07-12-2006, 17:14
il codice e questo

for(I=1;i<=20;I++)
{
fscanf(fileASP,"%lf %lf %lf\n",&D[1],&D[2],&D[4]); fgets(RigaVuota,80,fileASP);
if(D[1]==5) break;
}
qui ci deve essere l'istruzione che torna indietro nel file di una riga ,dal punto
in cui si e verificata l'uscita dal for.
Spero che sia chiaro adesso

oregon
07-12-2006, 17:24
1) non è possibile utilizzare la variabile i e I nel ciclo ... sono diverse ... ma sara' una svista ...

2) se ho capito, potresti scrivere



for(i=1;i<=20;i++)
{
fscanf(fileASP, "%lf %lf %lf\n",&D[1],&D[2],&D[4]);
if(D[1]==5) break;
fgets(RigaVuota,80,fileASP);
}
fgets(RigaVuota,80,fileASP);


NOTA che ho invertito le due righe all'interno del ciclo ...

Pero', se carichi le righe in un vettore, all'uscita del ciclo hai gia' la riga "precedente" già in memoria e disponibile ...

JVins
07-12-2006, 17:40
Grazie e poi ti volevo chiedere u'altra cosa , siccome ho un altro problema con i file, ed è quello che io leggo 3 volte dentro un file , usando;
questo e il codice:
fscanf(fileASP,"%lf %lf\n",&D[1],&D[2]); // 1 lettura
fscanf(fileASP,"%lf %lf\n",&D[1],&D[2]); // 2 lettura
fscanf(fileASP,"%lf %lf\n",&D[1],&D[2]); // 3 lettura

poi dopo l'ultima lettura cioè la 3 lettura, devo tornare a leggere la riga precedente ad essa
questo come lo faccio ?

grazie

LeleFT
07-12-2006, 17:54
Il linguaggio va specificato anche nel titolo.
Questo lo modifico io.


Ciao. :ciauz:

oregon
07-12-2006, 19:52
Originariamente inviato da JVins
Grazie e poi ti volevo chiedere u'altra cosa , siccome ho un altro problema con i file, ed è quello che io leggo 3 volte dentro un file , usando;
questo e il codice:
fscanf(fileASP,"%lf %lf\n",&D[1],&D[2]); // 1 lettura
fscanf(fileASP,"%lf %lf\n",&D[1],&D[2]); // 2 lettura
fscanf(fileASP,"%lf %lf\n",&D[1],&D[2]); // 3 lettura

poi dopo l'ultima lettura cioè la 3 lettura, devo tornare a leggere la riga precedente ad essa
questo come lo faccio ?

grazie

Potresti farlo usando la fseek ma i dati di tale riga li potresti conservare in memoria ... perche' non lo fai?

Loading