Advertisement
Perlamado

Untitled

Feb 10th, 2020
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. // esame 26-02-2016
  2. /*file260216.txt
  3. 2000 02 10 11 A123 33
  4. 2000 04 9 12 A124 2
  5. 2001 06 12 02 A125 4
  6. 2001 10 16 01 A221 2,7
  7. 2002 01 13 00 A315 32,6
  8. 2003 03 14 05 A316 22
  9. 2004 10 15 06 A412 15,1
  10. 2005 09 20 21 A317 17,2
  11. 2006 11 17 08 A351 33,6
  12. 2007 12 18 12 A275 18
  13. */
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include <math.h>
  18. struct dati{
  19. int anno;
  20. int mese;
  21. int ora;
  22. int min;
  23. int centralina;
  24. double temperatura;
  25. };
  26. struct dati *letturaFile(FILE *f,int *n);
  27. void stampaStructDati(struct dati *d,int n);
  28.  
  29. int main( int argc, char *argv[]){
  30. int nDati;
  31. struct dati *dati;
  32. FILE *f;
  33.  
  34.  
  35. if(argc!=2){
  36. return 1;
  37. }
  38. f=fopen(argv[1],"r");
  39.  
  40. if(f==NULL){
  41. printf("file non trovato\n");
  42. return 0;
  43. }
  44. //lettura e stampa struct
  45. dati=letturaFile(f,&nDati);
  46. stampaStructDati(dati,nDati);
  47.  
  48. return 0;
  49. }
  50.  
  51. struct dati *letturaFile(FILE *f,int *n){
  52.  
  53. int nConv;
  54. char buffer[100];
  55. char s1[5]; //codice centralina completo Axxx
  56. char s2[4];// codice centralina numerico xxx
  57. struct dati *d1,*d2;
  58. int size=10;
  59. *n=0;
  60. d2=malloc(size*sizeof(struct dati));
  61.  
  62. while(fgets(buffer,sizeof(buffer),f)){
  63. d1=d2 + *n;
  64. nConv=sscanf(buffer,"%d %d %d %d %s %lf",&d1->anno,&d1->mese,&d1->ora,&d1->min,s1,&d1->temperatura);
  65. strcpy(s2,s1+1);// s2 stringa in cui copio e s1+1 è la posizione da cui inizio a copiare
  66. d1->centralina=atoi(s2); // inserisco il contenuto della stringa s2 all'interno della struct nel int centralina
  67. //printf("%s\n",s2);
  68. (*n)++;
  69. if(*n>=size){
  70. size=size*2;
  71. d2=realloc(d2,size*sizeof(struct dati));
  72. }
  73. }
  74. d2=realloc(d2,*n*sizeof(struct dati));
  75. return d2;
  76. }
  77.  
  78. void stampaStructDati(struct dati *d,int n){
  79. int i;
  80. for(i=0;i<n;i++){
  81. 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);
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement