Scrittura su file binario

di il
5 risposte

Scrittura su file binario

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

  • Re: Scrittura su file binario

    Con la fwrite
  • Re: Scrittura su file binario

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

    se volessi scrivere nella riga successiva,dovrei muovermi con fseek ?
  • Re: Scrittura su file binario

    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.
  • Re: Scrittura su file binario

    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.
  • Re: Scrittura su 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