PDA

Visualizza la versione completa : [C] Lettura dati da un file


vasilimaff
16-03-2011, 11:55
Salve a tutti, ho guardato un po in giro ma non credo di aver visto ciò di cui ho bisogno. Spero mi potrete aiutare.
Io ho un file nomi.dat così strutturato:
25 gennaio 1985
3 aprile 2011
etc..
devo scrivere un programma che produca 3 risultati.
1-media di tutte le date presenti nel file,
2-media ti tutti gli anni presenti nel file,
3-indichi il mese più ricorrente tra quelli del file.
E' un esercizio di preparazione ad un esame di C all'università.
Per ora sul primo punto sono giunto a questo:

#include <stdio.h>
#include <string.h>
int main() {
int giorno;
FILE *fp;
fp=fopen("lista.dat","r");
while(!feof(fp)) {
fscanf(fp,"%d",&giorno);
printf("%d\n",giorno);
}
fclose(fp);
return 0;
}

Solo che così legge correttamente solo il 25 (primo giorno) e poi lo ristampa all'infinito.
Il printf l'ho messo dentro al while per vedere cosa leggeva, se lo metto fuori dal while invece il programma si avvia ma non stampa nulla e devo interromperlo.
So che dovrei dirgli una volta letto il 25 di andare subito a capo e leggere il secondo valore e così via ma non ho idea di come fare...
Grazie in anticipo a chiunque mi aiuterà.

jobv
17-03-2011, 18:43
Ciao,

ma procedere con una cosa di questo tipo:


#include <stdio.h>
#include <string.h>

int main()
{
int giorno;
char mese[10];
char a_capo;
int anno;
FILE *fp;

fp=fopen("file.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %d %c",&giorno,mese,&anno,&a_capo);
printf("%d %s %d\n",giorno,mese,anno,a_capo);
}
fclose(fp);

return 0;
}

Loading