Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    94

    [C++] File binari write e read

    Salve a tutti,
    sto cercando di sviluppare dei semplici esercizi sui file binari in C++.
    Quando creo il file e scrivo anche un semplice intero, aprendo il file mi ritrovo caratteri strani. Credo sia dovuto al fatto che questi file (a differenza di quelli di testo) sono come un flusso continuo di bit. E' questa la motivazione per cui aprendo il file leggo solo caratteri strani? Sinceramente ho dei dubbi perché poi facendo una read e stampando a video il contenuto, comunque mi vengono visualizzati numeri strani.
    Vi posto il codice di un banale programmino, perché mi sa che sbaglio qualcosa sintatticamente.
    Grazie mille

    codice:
    #include <iostream>#include <fstream>
    
    
    
    
    using namespace std;
    
    
    fstream prova;
    
    
    main(){
    
    
        int numero,n;
        prova.open("prova.dat", ios::in|ios::out|ios::app|ios::binary);
    
    
    
    
        if (prova.fail()){
        cout<< "Errore apertura file"<<endl;
       }
    
    
        cout<<"digita numero: ";
        cin>>numero;
    
    
        prova.write((char*)&numero, sizeof(numero));
        
        prova.read((char *) &n, sizeof(int));
        cout<<"n= "<<n;
        
        
        prova.close();
    
    
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,352
    E' normale vedere caratteri "strani" con un editor di testo, dato che i valori sono salvati in binario. I numeri che registri non saranno in ASCII ma nella rappresentazione binaria usata in memoria.

    Per i problemi del codice, non puoi usare una read subito dopo una write. Dopo la write il puntatore usato per la scrittura nel file viene aggiornato e se vuoi leggere il dato appena scritto devi riportarlo indietro.

    Ti consiglio di studiare il funzionamento di base dei file binari prima di utilizzarli. La documentazione è abbondante e chiara (oltre che semplice), naturalmente, se vai a caso non potrai mai far funzionare il codice.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    94
    Quote Originariamente inviata da oregon Visualizza il messaggio
    E' normale vedere caratteri "strani" con un editor di testo, dato che i valori sono salvati in binario. I numeri che registri non saranno in ASCII ma nella rappresentazione binaria usata in memoria.

    Per i problemi del codice, non puoi usare una read subito dopo una write. Dopo la write il puntatore usato per la scrittura nel file viene aggiornato e se vuoi leggere il dato appena scritto devi riportarlo indietro.

    Ti consiglio di studiare il funzionamento di base dei file binari prima di utilizzarli. La documentazione è abbondante e chiara (oltre che semplice), naturalmente, se vai a caso non potrai mai far funzionare il codice.
    Innanzitutto grazie per la risposta. Poi sono riuscita a trovare la conferma che cercavo! Sì, ho riportato il puntatore indietro perché mi sono documentata, fortunatamente non vado a caso! Grazie cmq

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 © 2021 vBulletin Solutions, Inc. All rights reserved.