Buongiorno a tutti sto creando un programma per la gestione di una libreria, essenzialmente il programma è un archivio dove si possono inserire libri, salvarli su file e poi successivamente poterli ricercare ecc, ho creato una funzione per il conteggio e la dimensione dello spazio che occupa il file in totale ma non capisco il perchè ogni blocco mi occupa 156 byte.
questa è la struttura della libreria:
typedef struct{
char titolo[MAX];
char autore[MAX];
char genere[MAX];
int anno;
}libreria;
/*Funzione inserimento libro*/
void ins_libro(void)
{
system("cls");
libreria libro;
fptr = fopen("archivio.dat","ab+");
if(fptr == NULL)
{
printf("Errore apertura File!");
exit(1);
}
printf("Inserisci il titolo del libro: ");
gets(libro.titolo);
fflush(stdin);
printf("Inserisci l'autore del libro: ");
gets(libro.autore);
fflush(stdin);
printf("Inserisci il genere del libro: ");
gets(libro.genere);
fflush(stdin);
printf("Inserisci anno di scrittura: ");
scanf("%d",&libro.anno);
fflush(stdin);
fwrite(&libro, sizeof(libreria), 1, fptr);
fclose(fptr);
}
Mentre questa è la funzione per il conteggio dei byte:
long int findSize(char file_name[])
{
FILE* fp = fopen(file_name, "rb");
if (fp == NULL) {
printf("File Not Found!\n");
exit (1);
}
fseek(fp, 0L, SEEK_END);
long int tot = ftell(fp);
fclose(fp);
return tot;
}
per ogni libro che inserisco vengono aggiunti 156 byte, il totale di questi byte come vengono calcolati?
ossia ogni carattere è 1 byte e si sommano anche gli spazi? oppure il programma aggiunge qualcos'altro?