[C]lettura dati da file esterno

frab1
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?

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
vict85
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.

frab1
ah, non c'è modo di ignorare la prima riga?? come si puo' fare allora?

apatriarca
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);

vict85
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.