#include #include #include 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'; }