PDA

View Full Version : [C] problema fwrite e fread!


managerfx
12-01-2012, 19:27
Ragazzi mi dareste una mano? come mai in questo semplice programma riportato sotto la funzione fwrite e fread non copia rispettivamente nel file txt i valori e neanke stampa correttamente su monitor??



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

typedef struct
{
int num;
char cognome[20], nome [20] ;
float bilancio ;
} daticliente;


main()
{

daticliente banca = {10, "felix", "lomba", 120};


FILE *alfa;

if ((alfa=fopen("banca.txt", "w")) == NULL)
printf ("\n\nFile non trovato!");
else {
fwrite (&banca, sizeof(daticliente), 1, alfa);
fread (&banca, sizeof(daticliente), 1, alfa);

printf ("%d - %s - %s - %f", banca.num, banca.cognome, banca.nome, banca.bilancio);

fclose (alfa);
}

printf ("\n\n");
system ("pause");
}

Mettiu_
12-01-2012, 22:22
Non stampa perchè le operazioni sono fatte sequenzialmente, cioè se prima fai la fwrite(), la prossima fread() verrà fatta a partire da dove è finita la write quindi non leggi niente perchè i dati sono "indietro". Per leggere qualcosa di sensato dovresti riposizionarti all'inizio del file (vedi funzione fseek() ). In alternativa, (solo per prova) chiudi il file dopo la fwrite() e riaprilo prima della fread(), in questo modo ti posizioni all'inizio del file...

P.S. Se non ci sono altri errori, ovviamente...

tecno789
13-01-2012, 20:59
esattamente..dovresti usare questa funzione per ritornare a inizio file :



fseek(fp, 0L, SEEK_SET);

oppure :

rewind(fp);