School-Coding-Cpp/verifica_6/Vichi.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;
}