Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // esame 26-02-2016
- /*file260216.txt
- 2000 02 10 11 A123 33
- 2000 04 9 12 A124 2
- 2001 06 12 02 A125 4
- 2001 10 16 01 A221 2,7
- 2002 01 13 00 A315 32,6
- 2003 03 14 05 A316 22
- 2004 10 15 06 A412 15,1
- 2005 09 20 21 A317 17,2
- 2006 11 17 08 A351 33,6
- 2007 12 18 12 A275 18
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- struct dati{
- int anno;
- int mese;
- int ora;
- int min;
- int centralina;
- double temperatura;
- };
- struct dati *letturaFile(FILE *f,int *n);
- void stampaStructDati(struct dati *d,int n);
- int main( int argc, char *argv[]){
- int nDati;
- struct dati *dati;
- FILE *f;
- if(argc!=2){
- return 1;
- }
- f=fopen(argv[1],"r");
- if(f==NULL){
- printf("file non trovato\n");
- return 0;
- }
- //lettura e stampa struct
- dati=letturaFile(f,&nDati);
- stampaStructDati(dati,nDati);
- return 0;
- }
- struct dati *letturaFile(FILE *f,int *n){
- int nConv;
- char buffer[100];
- char s1[5]; //codice centralina completo Axxx
- char s2[4];// codice centralina numerico xxx
- struct dati *d1,*d2;
- int size=10;
- *n=0;
- d2=malloc(size*sizeof(struct dati));
- while(fgets(buffer,sizeof(buffer),f)){
- d1=d2 + *n;
- nConv=sscanf(buffer,"%d %d %d %d %s %lf",&d1->anno,&d1->mese,&d1->ora,&d1->min,s1,&d1->temperatura);
- strcpy(s2,s1+1);// s2 stringa in cui copio e s1+1 è la posizione da cui inizio a copiare
- d1->centralina=atoi(s2); // inserisco il contenuto della stringa s2 all'interno della struct nel int centralina
- //printf("%s\n",s2);
- (*n)++;
- if(*n>=size){
- size=size*2;
- d2=realloc(d2,size*sizeof(struct dati));
- }
- }
- d2=realloc(d2,*n*sizeof(struct dati));
- return d2;
- }
- void stampaStructDati(struct dati *d,int n){
- int i;
- for(i=0;i<n;i++){
- printf("%d %d %d %d %d %lf\n",d[i].anno,d[i].mese,d[i].ora,d[i].min,d[i].centralina,d[i].temperatura);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement