Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444

    [C++]Problema con i file binari

    Ho scritto questo codice

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    struct studente {
      char nome[50];
      int  voto;
    };
    
    int main(int argc, char *argv[])
    {
        char filename[] = "studenti.dat";
        studente stud;
        
        fstream fs;
        
        // Fase 1. Dati precedenti
        fs.open (filename,ios::binary | ios::in);
        if (!fs || fs.eof())
        {
          // Non sono ancora presenti record
          cout << "Nessun dato già presente\n";
        }
        else
        {
          // Stampiamo i record già presenti
          while (fs.read((char*)&stud,sizeof stud))
            cout << stud.nome << "\t" << stud.voto << endl;
        }
        fs.close();
        
        system ("pause");
        
        // Fase 2. Inserimento nuovi dati
        fs.open (filename,ios::app | ios::binary);
        
        if (!fs)
          cout << "Errore nell'apertura del file";
        
        int n;
        cout << "Studenti da aggiungere: ";
        cin >> n;
        
        for (int i = 0; i < n; i++)
        {
          cout << "STUDENTE " << i+1 << endl;
          cout << "Nome: ";
          cin >>  stud.nome;
          cout << "Voto: ";
          cin >>  stud.voto;
          fs.write((char*)&stud, sizeof stud);
        }
        
        fs.close();
        
        system ("pause");
        return 0;
    }
    ma ha un problema. Quando apre il file la seconda volta e verifica il successo dell'operazione

    // Fase 2. Inserimento nuovi dati
    fs.open (filename,ios::app | ios::binary);

    if (!fs)
    cout << "Errore nell'apertura del file";

    stampa sempre il messaggio di errore, ed in effetti non scrive nulla sul file. Quale può essere il problema??
    *********************************
    Andrea
    *********************************

  2. #2

    Re: [C++]Problema con i file binari

    Originariamente inviato da Squall1988
    Ho scritto questo codice

    codice:
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    struct studente {
      char nome[50];
      int  voto;
    };
    
    int main(int argc, char *argv[])
    {
        char filename[] = "studenti.dat";
        studente stud;
        
        fstream fs;
        
        // Fase 1. Dati precedenti
        fs.open (filename,ios::binary | ios::in);
        if (!fs || fs.eof())
        {
          // Non sono ancora presenti record
          cout << "Nessun dato già presente\n";
        }
        else
        {
          // Stampiamo i record già presenti
          while (fs.read((char*)&stud,sizeof stud))
            cout << stud.nome << "\t" << stud.voto << endl;
        }
        fs.close();
        
        system ("pause");
        
        // Fase 2. Inserimento nuovi dati
        fs.open (filename,ios::app | ios::binary);
        
        if (!fs)
          cout << "Errore nell'apertura del file";
        
        int n;
        cout << "Studenti da aggiungere: ";
        cin >> n;
        
        for (int i = 0; i < n; i++)
        {
          cout << "STUDENTE " << i+1 << endl;
          cout << "Nome: ";
          cin >>  stud.nome;
          cout << "Voto: ";
          cin >>  stud.voto;
          fs.write((char*)&stud, sizeof stud);
        }
        
        fs.close();
        
        system ("pause");
        return 0;
    }
    ma ha un problema. Quando apre il file la seconda volta e verifica il successo dell'operazione

    // Fase 2. Inserimento nuovi dati
    fs.open (filename,ios::app | ios::binary);

    if (!fs)
    cout << "Errore nell'apertura del file";

    stampa sempre il messaggio di errore, ed in effetti non scrive nulla sul file. Quale può essere il problema??
    prova cosi':
    codice:
    ..
     fs.open (filename,ios::app | ios::binary);
        
        if (!fs)
        fs.open (filename,ios::out | ios::binary);
        
        if (!fs)
          cout << "Errore nell'apertura del file";
    ..

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    niente da fare
    *********************************
    Andrea
    *********************************

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    ho notato ke se uso una nuova variabile di tipo ofstream va, ma la cosa non mi garba molto...
    *********************************
    Andrea
    *********************************

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.