Scrittura su file binario

di Anonimizzato14340 il
5 risposte
Data una struttura,
come posso scrivere i dati su un file binario ?
Il mio scopo e' salvare i dati sul file per poi andare comodamente a leggerli.
Esempio :

Nome :
Cognome:
Matricola:

Nome :
Cognome:
Matricola:

5 Risposte

  • Con la fwrite
  • Potrebbe andar bene,
    fwrite(& studente.Nome,sizeof(studente.Nome) ,1,pf); ?

    se volessi scrivere nella riga successiva,dovrei muovermi con fseek ?
  • Devi mostrare l'effettiva struttura che utilizzi per avere un risposta precisa ...

    Comunque, la fseek non è necessaria per la prossima fwrite e se hai un vettore di strutture basta comunque una sola fwrite.
  • La mia struttura e' :

    typedef struct {
    int Matricola;
    char Nome[50];
    char Cognome[50];
    }studente;

    in sostanza ho un altro file binario da cui leggo le informazioni e le stampo a video :

    while(fread(&studente,sizeof(studente),1,pf1)!=0){
    printf("Matricola: %d\n",studente.Matricola);
    printf("Nome: %s\n",studente.Nome);
    printf("Cognome: %s\n",studente.Cognome);

    adesso oltre a visualizzarle vorrei stamparle su un file binario.
  • La fwrite() è molto simile alla fread(), nel senso che come per la fread() passi un puntatore ad una struttura temporanea (o direttamente un elemento del tuo array di strutture).
    Però la fread che ci hai mostrato non è corretta:
    while(fread(&studente,sizeof(studente),1,pf1)!=0)
    se 'studente' è il tipo di dato non lo puoi utilizzare per immagazzinare dei dati... il compilatore dovrebbe darti errore; piuttosto dovresti scrivere:
    sudente tempstud;
    while(fread(&tempstud,sizeof(studente),1,pf1)!=0)
    così se la fread() va a buon fine in tempstud hai il tuo "record": naturalmente all'interno del ciclo while farai tutte le operazioni necessarie per copiare tempstud in un array di strutture o qualsiasi altra cosa tu debba fare.
Devi accedere o registrarti per scrivere nel forum
5 risposte