Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [C++] File binari

  1. #1
    Utente di HTML.it L'avatar di xrwnis
    Registrato dal
    Apr 2008
    Messaggi
    42

    [C++] File binari

    Ciao! Sto cercando di imparare a far funzionare i file binari... Ho qualche problema con la lettura da file... questo non è un vero programma, solo una prova, ma comunque non funziona...Dovrebbe uscire sul video quello che c'è scritto in miofile??

    codice:
    #include<iostream>
    #include<fstream>
    
    using namespace std;
    
    main()
    {
          char prova[100];
          ifstream file;
          
          file.open("miofile",ios::in|ios::binary);
    
          file.read((char*) &prova,100);    //cosa vuol dire questo (char*)??
          file.close();
          system("pause");
    }
    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    A prima vista esce un crash.
    file.read((char*) &prova,100); //cosa vuol dire questo (char*)??
    La riga dev'essere:
    codice:
    file.read(prova,100);
    perché prova è già un array di caratteri.

    Il cast a char* si rende necessario quando il parametro non è di tipo char*. Ad esempio una struttura.

    codice:
    struct alpha {
    ...
    ...
    };
    
    alpha aph;
    
    file.read((char*)&aph,sizeof(alpha));

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Sarebbe stato ammesso un

    codice:
    (char*)&prova[0]
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Sì, anche se sarebbe stata una scrittura inutilmente fuorviante.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di xrwnis
    Registrato dal
    Apr 2008
    Messaggi
    42
    ...scusatemi per la mia infinita ignoranza...ma questa sottospecie di programma non funziona...
    codice:
    #include<iostream>
    #include<fstream>
    
    using namespace std;
    
    main()
    {
          char prova[100];
          ifstream file;
          
          file.open("miofile",ios::in|ios::binary);
    
          file.read(prova,100);
          file.close();
          
          for(int i=0;i<100;i++)
             cout<<prova[i];
             
             
          system("pause");
    }
    per caso nel file da cui vado a leggere ci deve essere qualcosa in particolare??

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    codice:
          
          file.open("miofile",ios::in|ios::binary);
    Devi assicurarti che "miofile" esista intanto (dovrebbe essere nella stessa directory dell'eseguibile).
    Fa attenzione che non viene aggiunta nessuna estensione al file, quindi fstream si aspetta proprio "miofile".

    Specificando un percorso:
    codice:
          
          file.open("C:/miofile.dat",ios::in|ios::binary);
    
          oppure
    
          file.open("C:\\miofile.dat",ios::in|ios::binary);
    cerca in C: un file di nome "miofile.dat"

  7. #7
    Utente di HTML.it L'avatar di xrwnis
    Registrato dal
    Apr 2008
    Messaggi
    42
    grazie mille... ora ho capito...

  8. #8
    Utente di HTML.it L'avatar di xrwnis
    Registrato dal
    Apr 2008
    Messaggi
    42
    dovrei prendere delle informazioni da un file binario, metterle nella struct e poi stamparle a video... con questo programma quando stampo nome mi stampa nome,cognome e anni, quando stampo cognome mi stampa cognome e anni...credo proprio di non aver ben capito il funzionamento, cioè con i file di testo normali si fermava a fine riga, qui il fine riga non esiste, quindi come dovrebbe fare a mettere la prima parola nel campo nome, la seconda in cognome e l'intero in anni????

    codice:
    #include<iostream>
    #include<fstream>
    using namespace std;
    
    
    
    struct Tpersona{
           char nome[10];
           char cognome[10];
           int anni;
           };
           
    main()
    {
        Tpersona pers1;
        int lunghezza=sizeof(Tpersona);
        
        ifstream file;
        file.open("persone",ios::in|ios::binary);
        file.read((char*) &pers1,lunghezza);
        file.close();  
        
        cout<<pers1.nome<<endl;
        cout<<pers1.cognome<<endl;
        cout<<pers1.anni;
        system("pause");    
          
    }
    Grazie...

  9. #9
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Potrebbe essere un problema di scrittura
    Come scrivi la struttura nel file?
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  10. #10
    Utente di HTML.it L'avatar di xrwnis
    Registrato dal
    Apr 2008
    Messaggi
    42
    scrivo nome e vado a capo, cognome e vado a capo... ho provato anche mettendo solo degli spazi ma è lo stesso... devo strutturarlo in qualche altro modo?

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