PDA

Visualizza la versione completa : [C] lettura e scrittura dal file binario


feys88
08-07-2011, 01:18
ho fatto un piccolo programma per scrivere un dato in file biario e successivamente leggerlo



/* fwrite example : write buffer */
#include <stdio.h>

int main ()
{
FILE * pFile;
char buffer[] = { 'x' , 'y' , 'z' };
pFile = fopen ( "myfile" , "wb" );
fwrite (buffer , 1 , sizeof(buffer) , pFile );
rewind(pFile);
fread (buffer , 1 , sizeof(buffer) , pFile );
printf(" %s ",buffer);

fclose (pFile);
return 0;
}



ora il risultato della printf è xyzH�x�
perchè? eppure ho riportato il cursore all'inizio.

oregon
08-07-2011, 10:57
Originariamente inviato da feys88
perchè?

Perché una stringa è terminata dallo zero binario. Se rileggi i dati e li visualizzi come stringa (con la printf) allora devi avere cura di includere lo zero binario quando scrivi.
Quindi dovrà essere



char buffer[] = { 'x' , 'y' , 'z', '\0' };

YuYevon
08-07-2011, 23:12
Comuque con quel codice non credere di rileggere davvero dal file: la fread() fallisce perché non hai chiuso e riaperto il file in modalità lettura. Il buffer che vai a stampare è semplicemente quello che hai inizializzato, la lettura non sortisce alcun effetto perché di fatto non avviene (prova a stampare il valore di output della fread() per rendetene conto).

oregon
09-07-2011, 10:09
In effetti, con la modalità di apertura "wb" non funzionerà.

Ma basta aprire il file con

pFile = fopen ( "myfile" , "r+b" );

perché la rewind effettui lo switch tra scrittura e lettura.

Loading