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.