102 lines
2.6 KiB
C
102 lines
2.6 KiB
C
/*
|
|
AUTORE: Manuel Vichi
|
|
Verifica di Informatica sui file binari
|
|
*/
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
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;
|
|
}
|