PDA

Visualizza la versione completa : Lettura da file


Tempestaxmen
21-07-2006, 12:17
Salve, nel programma che sto facendo devo poter leggere dei dati scritti su file.
Questi dati sono numeri interi e io devo poterli leggere a coppie, lavorarci sopra e poi leggere una nuova coppia.
Una volta aperto il file io riesco a leggere la prima coppia, poi però rimango a ciclare sempre sulla stessa... come posso fare per andare avanti con gli altri numeri?
Ah, il file non lo chiudo mai.
Grazie.

oregon
21-07-2006, 13:06
Beh ... se non fai vedere il codice che non funziona, come si fa a dirti dove e' il problema?

giano118
21-07-2006, 14:16
e se contassi l'intero numero di caratteri sulla riga e poi dividi per 2?
in questo modo ottieni il numero delle coppie sulle quali lavorare, da questo punto basta che dopo aver lavorato la prima coppia vai a posizionarti nella posizione esatta in cui ti serve, quindi la coppia successiva...
a parole io farei così
posta un pò di codice...magari si riesce a venirti incontro meglio...

ciao

LeleFT
21-07-2006, 14:21
Originariamente inviato da giano118
e se contassi l'intero numero di caratteri sulla riga e poi dividi per 2?
in questo modo ottieni il numero delle coppie sulle quali lavorare
Cioè, secondo te, nel file qui sotto, ci sono 5 coppie (10 caratteri diviso 2)?


1234 5678

No, eh? :)


Ciao. :ciauz:

Tempestaxmen
21-07-2006, 17:25
In poche parole il codice che sto scrivendo somiglia a questo:
nel file "input.txt" ho scritto: 2 6 7 4 3 9 5 7 6 4 1 6
che vanno considerati nel modo: (2,6) (7,4).... quindi ho scritto 6 coppie di numeri.
Nel programma ho messo:

FILE *ingresso;
ingresso = fopen("Input.txt","r");
if((ingresso = fopen("Input.txt","r")) == NULL)
printf("Non apre il file");
fscanf(ingresso,"%d %d",&i,&j); //i,j sono delle variabili intere
lavora_su_nodi(i,j); //funzione per utilizzare i valori

visto che volevo richiamare la funzione lavora_su_nodi per tutte le coppie all'interno del file, avevo pensato di inserire all'interno di "input.txt" il numero -1 e mettere la condizione
while(i != -1)... ma alla fine mi considera anche quel numero come facente parte di una coppia.
Come posso capire quando sono finiti i numeri? Visto che EOF non lo riconosce come comando valido?
Grazie ancora.

oregon
21-07-2006, 19:05
Non capisco perche' fai la open due volte nel tuo codice ... comunque questo e' un esempio



int i, j;

FILE *ingresso;

ingresso = fopen("c:\\input.txt","r");
while(fscanf(ingresso, "%d %d", &i, &j) == 2)
printf("%d %d\n", i,j);


Uso solo la printf per visualizzare i dati letti.

Loading