Problema con file

di il
8 risposte

Problema con file

Ho scritto questo programma che dovrebbe essere corretto, è solo che dopo aver scritto nel file il programma si interrompe e non mi stampa a video quello che ho scritto nel file:
#include <iostream>
#include<fstream>
using namespace std;
void stampa_video()
{char c;
fstream vale;
vale.open("ciao",ios::in);
while(vale.get(c))
cout<<c;
vale.close();}

int main()
{
ofstream vale ("ciao");
if (!vale){
cerr<<"No file";
return -1;
}
char c;
while(cin.get(c)){
vale.put(c);
if (c == 'x') break;}
stampa_video();
return 0;
}

8 Risposte

  • Re: Problema con file

    Il tuo file viene aperto nel main e riaperto nella funzione senza prima essere chiuso. Il while finisce subito in quanto lo stream non è valido.
  • Re: Problema con file

    Ho riscritto in questo modo:
    #include <iostream>
    #include<fstream>
    using namespace std;
    void stampa_video()
    {char c;
    fstream vale;
    vale.open("ciao",ios::in);
    while(vale.get(c))
    cout<<c;
    vale.close();}
    
    void scrivi()
    {
    ofstream vale ("ciao");
    vale.open("ciao",ios::out);
    if (!vale){
    cerr<<"No file";
    }
    char c;
    while(cin.get(c)){
    vale.put(c);
    vale.close();}}
    int main()
    {
    cout<<"scrivi nel file"<<endl;
    scrivi();
    cout<<endl;
    stampa_video();
    return 0;
    }
    però adesso mi dà no file,quindi non mi crea più il file,invece prima se già il file esisteva ci scriveva dentro sennò lo creava
  • Re: Problema con file

    
    ofstream vale ("ciao");
    vale.open("ciao",ios::out);
    
    apertura doppia.
  • Re: Problema con file

    Ok,adesso il programma parte,ma mi fa scrivere all'infinito,così ho scritto if (c == 'x' )break;ma quando premo x il programma si chiude,ecco:
    #include <iostream>
    #include<fstream>
    using namespace std;
    void stampa_video()
    {char c;
    fstream vale;
    vale.open("ciao",ios::in);
    while(vale.get(c))
    cout<<c;
    vale.close();}
    
    void scrivi()
    {
    ofstream vale ("ciao");
    if (!vale){
    cerr<<"No file";
    }
    char c;
    while(cin.get(c)){
    vale.put(c);
    if (c == 'x') break;}
    vale.close();}
    int main()
    {
    cout<<"scrivi nel file"<<endl;
    scrivi();
    cout<<endl;
    stampa_video();
    return 0;
    }
  • Re: Problema con file

    Il programma funziona. sei tu che non vedi l'output che è diverso.
  • Re: Problema con file

    Adesso va,avevo dimenticato system("pause"),un'ultima domanda,praticamente scrivi file mi salva anche il file?perchè ho anche aggiunto salva_file:
    void salva_file()
        {
       fstream vale;
       char c;
       vale.open("ciao",ios::out);
       
       while (vale.get(c)){
       vale<<c;
      }  
       
       vale.close();}
    è scritto bene?ma è necessario metterlo?grazie in anticipo
  • Re: Problema con file

    Se non ti salvasse il file da dove leggeresti quello che hai scritto? così sarebbe meglio:
    
    void salva_file()
        {
       fstream vale;
       char c;
       vale.open("ciao",ios::out);
       if(vale.good()){   
             while (vale.get(c)){
                 vale<<c;
             }
      } 
       
       vale.close();
    }
    
  • Re: Problema con file

    Ah ok grazie,ho provato anche a scrivere una stringa,così:
    void scrivi()
    {char str[] = {'c', 'a', 'b'};
    ofstream vale ("ciao");
    if (!vale){
    cerr<<"No file";
    }
    vale<<str<<endl;
    vale.close();}
    mi scrive la stringa però mi scrive cab e poi un triangolino,non so cosa sia e poi sul file "ciao" salvato non c'è scritto niente, è vuoto, e non so perchè ma anche se scrivo col metodo di prima il file ciao è vuoto,non so com'è,si vede c'è qualche errore nel salvarlo
Devi accedere o registrarti per scrivere nel forum
8 risposte