[C]lettura dati da file esterno
ciao,
sto scrivendo un piccolo programma che sulla base di un file esterno dovra' eseguire determinati conti statistici sulle previsioni del tempo. Il file che leggo con la fopen presenta una prima riga nella quale ho il numero totale delle stazioni meteo, e dalla riga 2 in poi ho le stazioni,una per riga....
ho scritto il seguente codice, ma non riesco ad acquisire solo le righe dalla 2 in giu, cioe' solo le stazioni...come potrei fare?
sto scrivendo un piccolo programma che sulla base di un file esterno dovra' eseguire determinati conti statistici sulle previsioni del tempo. Il file che leggo con la fopen presenta una prima riga nella quale ho il numero totale delle stazioni meteo, e dalla riga 2 in poi ho le stazioni,una per riga....
ho scritto il seguente codice, ma non riesco ad acquisire solo le righe dalla 2 in giu, cioe' solo le stazioni...come potrei fare?
char leggi_staz(int dim) { int i=0; int stazioni[dim]; FILE *fp; fp=fopen("stazioni.txt","r"); for(i=i+1;i<dim;i++){ fscanf(fp,"%s",stazioni[i+1]); } fclose(fp); }
Risposte
Non puoi: non sai quanti caratteri devi andare avanti. Comunque puoi ignorare la lettura, cosa che ti sconsiglio fortemente perché il numero di stazioni è un numero utile.
ah, non c'è modo di ignorare la prima riga?? come si puo' fare allora?
fscanf(fp, "%*d");
L'asterisco dice a fscanf di leggere qualcosa ma di ignorarlo.. In alternativa puoi usare un ciclo come il seguente:
int c = 0; do { c = getc(fp); } while (c != '\n' && c != EOF);
Nota però che esiste un modo per memorizzare la posizione e andarci. Quindi se hai letto la prima riga altrove allora è possibile saltarla. Nota inoltre che se hai già letto la riga allora lo stream (il puntatore *FILE) potrebbe già essere nella posizione corretta.