#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct tRec{
    int id;
    char nome[20];
    char cognome[20];
    float peso;
    int eta;
};

void svuotaBuffer();
void elimina_a_capo(char *);
int main(int argv, char** argc) {
    struct tRec record;
    
    FILE *file = fopen("file.dat", "w+b");

    if(file == NULL) {
        perror("Error opening file");
        return -1;
    }   
    for(int i=1;i<=2;i++) {
        record.id = i;
        printf("Inserisci il Nome> ");
        fgets(record.nome,sizeof(record.nome), stdin);
        elimina_a_capo(record.nome);
        printf("Inserisci il Cognome> ");
        fgets(record.cognome,sizeof(record.cognome), stdin);
        elimina_a_capo(record.cognome);
        printf("Inserisci il Peso> ");
        scanf("%f", &record.peso);
        svuotaBuffer();
        printf("Inserisci l' Eta'> ");  
        scanf("%d", &record.eta);
        svuotaBuffer();        
        fwrite(&record, sizeof(struct tRec), 1, file);
    }
    rewind(file);
    while(feof(file) == 0) {
        fread(&record, sizeof(struct tRec), 1, file);
        if(feof(file)) break;
        printf("ID: %d, Nome: %s, Cognome: %s, Peso: %.2f, Eta': %d\n", record.id, record.nome, record.cognome, record.peso, record.eta);
    }
    fclose(file);
    return 0;
}

// Funzione per svuotare il buffer di input altrimenti fgets potrebbe non funzionare correttamente
void svuotaBuffer() {
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}  

//funzione per eliminare il carattere di a capo da una stringa altrimenti fgets lo mantiene e crea problemi
void elimina_a_capo(char *testo) {
    testo[strcspn(testo, "\n")] = '\0';
}