|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Feb 2011
Messaggi: 11
|
[C] problema fwrite e fread!
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??
Codice:
#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");
}
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
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...
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto. CONCLUSO POSITIVAMENTE CON: oldfield |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
esattamente..dovresti usare questa funzione per ritornare a inizio file :
Codice:
fseek(fp, 0L, SEEK_SET); oppure : rewind(fp);
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:55.



















