Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    88

    [C] lettura e scrittura dal file binario

    ho fatto un piccolo programma per scrivere un dato in file biario e successivamente leggerlo

    codice:
    /* 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.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: [C] lettura e scrittura dal file binario

    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

    codice:
      char buffer[] = { 'x' , 'y' , 'z', '\0' };
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    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).
    every day above ground is a good one

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    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.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.