PDA

Visualizza la versione completa : [C] Lettura da file


themind24
22-01-2006, 23:27
Salve, vorrei chiedere una cosa semplice.
Spiego subito il problema:
devo leggere da un file una stringa alla volta (un rigo alla volta del file) con un codice del tipo:

FILE *fp;
char str[MAXNAME];
fp=fopen("citta.txt", "r")

fscanf(fp, "%s", str)!=EOF)
printf("%s\n", str);

fclose(fp);


Il problema che dovrei leggere le successive stringhe riaprendo e chiudendo il file. Ovvero ad ogni lettura apro e chiudo il file, non seguo il procedimento: apri file, fai tutte le letture, chiudi file.

Aprendo e chiudendo ogni volta, mi stampa logicamente sempre la prima riga. C' un modo invece di far continuare a leggere ogni volta la riga successiva? (come avviene quando tutte le fscanf vengono fatte all'interno della stessa apertura-chusura) file.

Mi spiego meglio, dovrei fare in modo che un codice del tipo:

main()
{
fp=fopen("citta.txt", "r")
fscanf(fp, "%s", str)!=EOF)
printf("%s\n", str);
fclose(fp);

fp=fopen("citta.txt", "r")
fscanf(fp, "%s", str)!=EOF)
printf("%s\n", str);
fclose(fp);
}

non legga due volte la prima riga, ma legga la prima e poi la seconda.

Spero di essere stato chiaro.
Grazie.

oregon
22-01-2006, 23:49
Qualcosa del genere



int actualpos;
char str[100];

FILE *fp=fopen("citta.txt", "r");
fscanf(fp, "%s", str);
actualpos=ftell(fp);
printf("%s\n", str);
fclose(fp);

fp=fopen("citta.txt", "r");
fseek(fp,actualpos,SEEK_SET);
fscanf(fp, "%s", str);
printf("%s\n", str);
fclose(fp);


anche se, a meno che non ti serva "didatticamente", penso che stai affrontando un problema cercando una soluzione dal punto di vista sbagliato.

themind24
23-01-2006, 00:47
grazie ;-)

Loading