Originariamente inviato da Mercurial
Salve, mi sono appena inscritto e volevo chiedervi come posso scrivere e recupare struct su file in modo tale da poter effetuare modifiche e cancellazioni??
Una struct può contenere dati di tipo eterogeneo, int, double, char, array, puntatori, ecc....
In genere la soluzione più semplice è scrivere/leggere il contenuto della struct in modo "binario". Se però la struct contiene dei puntatori, c'è da prestare attenzione, perché non ha senso scrivere sul file un puntatore in quanto una volta riletto dal file non ha più significato.

Quindi innanzitutto bisogna valutare come è fatta la struct. Posso fare un esempio in "C" per scrivere una struttura su file.

codice:
#include <stdio.h>

typedef struct
{
    char  nome[30];
    char  cognome[30];
    short anno_nascita;
} PERSONA;

int main (void)
{
    PERSONA p = { "Mario", "Rossi", 1964 };
    FILE *f;
    size_t len;

    if ((f = fopen ("persone.dat", "wb")) != NULL)
    {
        len = fwrite (&p, 1, sizeof (PERSONA), f);

        if (len == sizeof (PERSONA))
            printf ("Scrittura OK\n");

        fclose (f);
    }

    return 0;
}
La lettura è simile, si usa però "rb" per aprire il file e fread per leggere.