Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142

    [c++]salvare su file dati

    salve sto cercando di capire da me stesso il funzionamento del salvataggio di dati su file .txt
    comunque sia io ho questo codice:
    codice:
    ofstream file;
         file.fopen("c:\\prova.txt",ios::in);
         if(!file){
           cout<<"Errore lettura "<<endl;
           exit(0);
         }
    e mi restituisce questo errore
    C:\Dev-Cpp\include\c++\3.4.2\backward\iostream.h:31, from C:\Documents and Settings\peppe\Desktop\SenzaTitolo1.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
    non riesco proprio a capire anche perchè sto cercando di farlo senza l aiuto di nessuno solo del mio manuale ma solo che ho provato uno degli esempi ma niente non compila

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381

    Re: [c++]salvare su file dati

    ofstream è lo stream di output.
    codice:
    ifstream file;
         file.fopen("c:\\prova.txt");
    o
    codice:
    fstream file;
         file.fopen("c:\\prova.txt",ios::in);
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    niente mi restituisce lo stesso errore non capisco

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Quali header file stai includendo?
    every day above ground is a good one

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    no scusami funziona ma solo adesso siccome sto facendo un applicazione da me cosi tanto per ho un errore nel compilare il sorgente perche sto cercando di implementare la scrittura su file di alcuni dati piu precisamente per ora solo il nome ecco il codice:
    codice:
    #include <cstdlib>
    #include <iostream>
    #include <conio.h>
    #include <time.h>
    #include <windows.h>
    #include <fstream.h>
    
    using namespace std;
    
    char Nome[20];
      
    void scrivifile(char Nome){
         ofstream file;
         file.open("F:\\Affari_tuoi.txt");
         file<<Nome;
         //file<<cont;
                  
    }
           
           
    int menu2(int cont, int totale, int totale2){
        int N, continua2, scelta;
           cout<<"Vuoi fare un altra giocata?..(1).SI,(2).NO: ";
           cin>>continua2;
           system("cls");   
           if(continua2 == 2){
             //scrivifile(Nome,cont);           
             do{ 
               cout<<"-------------------Black Jack by Oreste-------------------"<<endl;
               cout<<"1.Gioca"<<endl;
               cout<<"2.Istruzioni"<<endl;
               cout<<"3.Esci"<<endl;
               
               cin>>scelta;
          
               switch(scelta){           
                 case 1:  
                   system("cls");   
                   cout<<"Contenuto bloccato chiudere l' applicazione ed eseguirla nuovamente "<<endl;
                   system("PAUSE");
                   system("cls");
                   break;
                 case 2:
                   system("cls");   
                   cout<<"Il gioco consiste nel battere il banco o facendo 21 cioe' BlackJack "<<endl;
                   system("PAUSE");
                   system("cls");
                   break; 
                 case 3:
                   exit(0);                                
               }
             }while(scelta != 3); 
           }
           else{             
             do{
               if(totale>totale2){                                                   
                 cout<<"Immetti la tua puntata <1-"<<cont<<"> :";                                             
                 cin>>N; 
               }
               else{                                              
                 if(totale==totale2){                          
                   cout<<"Immetti la tua puntata <1-"<<cont<<"> :";                                             
                   cin>>N; 
                 } 
                 else{
                   if((totale<totale2)||(totale>21)){                                                        
                     cout<<"Immetti la tua puntata <1-"<<cont<<"> :";                                             
                     cin>>N; 
                   }
                   else{
                     if(totale==21){                        
                       cout<<"Immetti la tua puntata <1-"<<cont<<"> :";                                             
                       cin>>N; 
                     }
                   }      
                 }
               } 
               system("cls");  
             }while((N<1)||(N>cont));
           }
    }       
           
    int gioca(){
         int N,continua,cartaplayer,cartabanco,cont,vincita,pareggio,continua2,perdita,somma,scelta,totale,totale2;
         
         srand(time(NULL));
        
         cout<<"Inserisci il tuo nome: ";
         
         cin>>Nome;
         
         system("cls");
         
         cont = 1000;
         do{                            
           cout<<"Immetti la tua puntata <1-"<<cont<<">: ";
           cin>>N; 
           system("cls");                                                      
         }while((N<1)||(N>cont));
         do{    
           totale = 0;                                                                                                          
           do{            
                                                                                                             
             cartaplayer = 1 + rand()%10;  
             totale+=cartaplayer; 
             if(cartaplayer == 1){                   
             cout<<"Carta per "<<Nome<<":"<<"---<<endl;
             cout<<totale<<endl;  
             }             
             if(totale == 21){
               totale = 0;                        
               vincita = N*5;
               cont = vincita + cont;
               cout<<"BlackJack!!!!!! "<<vincita<<" fiches hai vinto "<<endl;
               cout<<"Nuovo saldo: "<<cont<<endl;
               menu2(cont,totale,totale2);
             } 
             else{
               if(totale > 21){
                 totale = 0;                
                 cont = cont-N;                         
                 cout<<"Hai sballato.......:( "<<N<<" fiches hai perso "<<endl;
                 cout<<"Nuovo saldo: "<<cont<<endl;
                 menu2(cont,totale,totale2);       
               } 
               else{
                 cout<<"Vuoi un altra carta?.....(1)SI,(2)NO: ";
                 cin>>continua;
               }         
             }
           }while(continua!=2);          
           srand(time(NULL));
           int totale2 = 0;
           for(int I=0;I<3;I++){
             cartabanco = 1 + rand()%10;
             totale2+=cartabanco;
             for(int I=0;I<4;I++){
               cout<<".";                    
               _beep(rand() % 200, 500);
             }
             cout<<"Carta per il banco: "<<cartabanco<<endl;
             cout<<totale2<<endl;
             if(totale2 > 21){         
               vincita = N*2;
               cont = vincita + cont;                                                                 
               cout<<"Hai vinto!!!!!!! "<<vincita<<" fiches hai vinto "<<endl;
               cout<<"Nuovo saldo: "<<cont<<endl;
             }
             else{
               if(totale2 == 21){
                 cont = cont - N;
                 cout<<"BlackJack!!!!!! "<<N<<" fiches hai vinto "<<endl;
                 cout<<"Nuovo saldo: "<<cont<<endl;         
               }
             }                           
           }                                                                                   
           if((totale<totale2)&&(totale2<21)){
             cont = cont-N;                         
             cout<<"Hai perso.......:("<<N<<" fiches hai perso "<<endl;
             cout<<"Nuovo saldo: "<<cont<<endl;                                                                                   
           }
           else{         
             if(totale>totale2){ 
               vincita = N*2;
               cont = vincita + cont;                                                                 
               cout<<"Hai vinto!!!!!!! "<<vincita<<" fiches hai vinto "<<endl;
               cout<<"Nuovo saldo: "<<cont<<endl;          
             }
             else{
               if(totale==totale2){                                   
                 pareggio = (N*2)-5;       
                 cont = pareggio + cont;                             
                 cout<<"Parita'.......XD "<<pareggio<<" fiches hai guadagnato "<<endl;
                 cout<<"Nuovo saldo: "<<cont<<endl;
               }
             }          
           }   
           menu2(cont,totale,totale2);
         }while(continua2 != 2);                                                             
    }
    
    int main()
    {
        int scelta;
        char Nome;
        
        do{ 
          cout<<"-------------------Black Jack by Oreste-------------------"<<endl;
          cout<<"1.Gioca"<<endl;
          cout<<"2.Istruzioni"<<endl;
          cout<<"3.Esci"<<endl;
          
          cin>>scelta;
          
          switch(scelta){
            case 1:  
              gioca();
              scrivifile(Nome);
            case 2:
              system("cls");   
              cout<<"Il gioco consiste nel battere il banco o facendo 21 cioe' BlackJack "<<endl;
              system("PAUSE");
              system("cls");                           
          }
        }while(scelta != 3);
    }
    l errore riscontrato è il seguente:
    main.cpp: In function `int gioca()':

    main.cpp:107: error: missing terminating " character

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    codice:
    ...
             cartaplayer = 1 + rand()%10;  
             totale+=cartaplayer; 
             if(cartaplayer == 1){                   
             cout<<"Carta per "<<Nome<<":"<<"---"<<endl;
             cout<<totale<<endl;  
             }
    ...
    every day above ground is a good one

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    si grazie me ne sono accorto subito dopo aver postato la risposta e mi scuso comunque adesso vorrei chiedervi una cosa io ho creato il file ed inserito i dati che mi servono, ma se io volessi visualizzare questi dati come dovrei fare a caricare quei dati salvati nel file .txt?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Innanzitutto, a proposito del primo errore in compilazione che avevi, cioè questo:

    C:\Dev-Cpp\include\c++\3.4.2\backward\iostream.h:31, from C:\Documents and Settings\peppe\Desktop\SenzaTitolo1.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31

    non so come mai hai detto "ora funziona" perché io compilando con Dev otteno proprio lo stesso errore ( a parte poi le " mancanti ) e l'ho corretto sostituendo

    #include <fstream.h>

    con

    #include <fstream>

    e ti consiglio di fare altrettanto... per quanto poi riguarda il "caricamento" dei dati da file .txt, è difficile spiegarlo in poche righe perché in genere si tratta di almeno mezzo capitolo di un qualsiasi manuale sul C++, quindi ti consiglio di studiare l'argomento o almeno di dare un'occhiata qui.
    every day above ground is a good one

  9. #9
    Stai mischiando header C, header C++ vecchio stile e header C++ normali. Gli include corretti (anche se di conio.h non vedo la necessità) sono:
    codice:
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <conio.h> //non è standard e non mi pare neanche che sia utilizzato
    #include <ctime>
    #include <windows.h>
    Piuttosto, cerca di evitare tutte quelle chiamate a system (perché: 1, 2, 3); per la pulizia dello schermo ti basta scrivere una funzione del genere:
    codice:
    void ClearScreen()
    {
        COORD coordScreen = { 0, 0 }; 
        DWORD cCharsWritten; 
        CONSOLE_SCREEN_BUFFER_INFO csbi; 
        DWORD dwConSize; 
        HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);  // Handle a stdout
        //Ottiene i dati della console
        GetConsoleScreenBufferInfo(hConsole, &csbi); 
        //Calcola il numero di blocchi
        dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
        //Riempie tutti i blocchi con spazi
        FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten);
        //Reimposta gli attributi dei caratteri
        FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);
        //Riporta il cursore alla prima riga e prima colonna
        SetConsoleCursorPosition(hConsole, coordScreen); 
    }
    mentre al posto di system("pause"); puoi usare
    codice:
    cout<<"Premi Invio per continuare...";
    cin.ignore();
    Inoltre al posto della _beep (non standard, non so dove tu l'abbia pescata) usa la Beep di Windows.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.