/* AUTORE: Manuel Vichi Verifica di Informatica sui file binari */ #include #include #include #include typedef struct { int a; float b; } Struct3; typedef struct { char nome[12]; int eta; float altezza; } Struct6; int main(void) { // Inizio del Programma: Apertura del file // FILE* file = fopen("file_3.txt","rb"); if (file == NULL) { perror("Errore durante l'apertura del file in lettura"); return -1; } // Esercizio 1 // rewind(file); fseek(file,295,SEEK_SET); int int1 = 0; fread(&int1,sizeof(int),1,file); printf("%d\n",int1); // Esercizio 2 // rewind(file); fseek(file,360,SEEK_SET); int offset2 = 0; fread(&offset2,sizeof(int),1,file); rewind(file); //printf("%d\n",offset2); fseek(file,offset2,SEEK_SET); int int2 = 0; fread(&int2,sizeof(int),1,file); printf("%d\n",int2); // Esercizio 3 // rewind(file); fseek(file,491,SEEK_SET); Struct3 struct3; fread(&struct3,sizeof(struct3),1,file); printf("%d %f\n",struct3.a,struct3.b); // Esercizio 4 // rewind(file); fseek(file,491,SEEK_SET); char stringa4[16]; fread(&stringa4,sizeof(stringa4),1,file); printf("%s\n",stringa4); // Esercizio 6 // rewind(file); fseek(file,837,SEEK_SET); Struct6 struct6[10]; fread(&struct6,sizeof(Struct6),10,file); FILE* file6 = fopen("file6.txt","wt"); if (file6 == NULL) { perror("Errore durante l'apertura del file in scrittura"); fclose(file); return -1; } for (int i = 0; i < 9; i++) { fprintf(file6,"%s %d %f\n",struct6[i].nome, struct6[i].eta, struct6[i].altezza); } fprintf(file6,"%s %d %f",struct6[9].nome, struct6[9].eta, struct6[9].altezza); fclose(file6); file6 = fopen("file6.txt","rb"); uint8_t buffer[256]; uint8_t checksum = 0; int read = fread(&buffer,sizeof(uint8_t),256,file6); if (read == 0) { perror("Errore durante la lettura"); fclose(file); fclose(file6); return -1; } for (int i = 0; i < read; i++) { checksum += buffer[i]; } printf("%d\n",checksum); fclose(file6); // Fine del programma: chiusura del file di lettura e scrittura dei risultati su un file txt // fclose(file); FILE* results = fopen("results.txt","wt"); if (file == NULL) { perror("Errore durante l'apertura del file dei risultati"); return -1; } fprintf(results, "int1: %d\n",int1); fprintf(results, "int2: %d\n",int2); fprintf(results, "a: %d; b : %f\n",struct3.a,struct3.b); fprintf(results, "stringa4: %s\n",stringa4); fprintf(results, "checksum: %d\n",checksum); fclose(results); return 0; }