Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema con fwrite

    Ciao a tutti, sto creando un progetto in c++ che gestisca i voli di un aeroporto. Il mio problema riguarda la scrittura dei dati richiesti all'utente, letti all'interno dei campi di una struct, su un file.
    Ora posto il codice

    Codice PHP:
    #include <iostream>
    #include <windows.h>
    #include <stdlib.h>
    #include <fstream>
    using namespace std;
    struct ora1 
    int ora;
      
    int minuti;

    };

    struct volo1
    char id_volo[6];
      
    ora1 ora_partenza;
      
    ora1 ora_arrivo;
      
    char cod_partenza[6];
      
    char cod_arrivo[6] ;
      
    int canc;
    };

    struct aero1
    {char id_aeroporto[5];
     
    char nome[21];
     
    char citta[21];
     
    char nazione[21];
     
    int fusorario;
     
    int canc;
    };

    aero1 aeroporto;
    volo1 volo;

    void gotoxyint xint y ){
    COORD coord;
    coord.x;
    coord.y;
    SetConsoleCursorPosition(GetStdHandleSTD_OUTPUT_HANDLE ), coord);
    }

    void VIS_AEROPORTO()
    {
    system("cls");
     
    gotoxy(32,2);
     
    cout<<"INSERIMENTO AEROPORTO";
     
    gotoxy(5,5);
     
    cout<<"Codice:_____";
     
    gotoxy(34,5);
     
    cout<<"Nome:____________________";
     
    gotoxy(5,7);
     
    cout<<"Citta':____________________";
     
    gotoxy(34,7);
     
    cout<<"Nazione:____________________";
     
    gotoxy(5,9);
     
    cout<<"Fusorario:___"
        
        }
    int main()
    char risp[2];
     
    FILE *aero;
    if((
    aero=fopen("aeroporto.txt","r"))==NULL)aero=fopen("aero","w+");
        else { 
    fclose(aero);
           
    aero=fopen("aeroporto.txt","r+");
         }
      
    VIS_AEROPORTO();
       
    gotoxy(14,24);
        
    cout<<"Premi * per terminare";
        
    gotoxy(12,5);
        
    gets(aeroporto.id_aeroporto);
        while (
    aeroporto.id_aeroporto!="*")
        {
         
    gotoxy(39,5);
         
    gets(aeroporto.nome);
         
    gotoxy(12,7);
         
    gets(aeroporto.citta);
         
    gotoxy(42,7);
         
    gets(aeroporto.nazione);
         
    gotoxy(15,9);
         
    cin>>(aeroporto.fusorario);
         
    aeroporto.canc=0;
         
    gotoxy(32,11);
         
    cout<<"Confermi?(s/n) ";
         do 
         {
         
    gotoxy(47,11);
         
    cin>>(risp);  
         }while(
    risp!="n"||risp!="N"||risp!="S"||risp!="s");
         if (
    risp=="s"||risp=="S") {
          
    fwrite(&aeroporto,1sizeof(struct aero1),*aero);                      
          
    VIS_AEROPORTO();                     
         }
          
    gotoxy(14,24);
         
    cout<<"Premi * per terminare";
          
    gotoxy(12,5);
          
    cin>>aeroporto.id_aeroporto;     
        }
        
    fclose(aero);   
        
          
    system ("PAUSE");
        return 
    EXIT_SUCCESS;      
        } 
    e mi da questo errore

    87 C:\Users\Roberto\Desktop\Progetto\Prove\SenzaTitol o1.cpp cannot convert `_iobuf' to `FILE*' for argument `4' to `size_t fwrite(const void*, size_t, size_t, FILE*)'



    Che cosa significa?? Come compilatore sto usando Dev C++.

    Grazie in anticipo per la risposta!

  2. #2
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao . . . Non devi dereferenziare il puntatore aero nella chiamata a fwrite . . .
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  3. #3
    ok fatto grazie mille! Ora non so che tipo di errore mi da!UN semplice ciclo non mi viene rispettato! La prima volta che entra tutto bene e il cursore si sposta all'interno della maschera correttamente, la seconda volta mi salta proprio alcuni passaggi! non so il xk non riesco a capire! sono 2 giorni che c sbatto la testa, e in più i dati inseriti la prima volta non me li scrive neppure! non so che fare! HELP!


    Codice PHP:
    #include <iostream>
    #include <windows.h>
    #include <stdlib.h>
    #include <fstream>
    using namespace std;
    struct ora1 
    int ora;
      
    int minuti;

    };

    struct volo1
    char id_volo[6];
      
    ora1 ora_partenza;
      
    ora1 ora_arrivo;
      
    char cod_partenza[6];
      
    char cod_arrivo[6] ;
      
    int canc;
    };

    struct aero1
    {char id_aeroporto[5];
     
    char nome[21];
     
    char citta[21];
     
    char nazione[21];
     
    int fusorario;
     
    int canc;
    };

    aero1 aeroporto;
    volo1 volo;

    void gotoxyint xint y ){
    COORD coord;
    coord.x;
    coord.y;
    SetConsoleCursorPosition(GetStdHandleSTD_OUTPUT_HANDLE ), coord);
    }

    void VIS_AEROPORTO()
    {
    system("cls");
     
    gotoxy(32,2);
     
    cout<<"INSERIMENTO AEROPORTO";
     
    gotoxy(5,5);
     
    cout<<"Codice:_____";
     
    gotoxy(34,5);
     
    cout<<"Nome:____________________";
     
    gotoxy(5,7);
     
    cout<<"Citta':____________________";
     
    gotoxy(34,7);
     
    cout<<"Nazione:____________________";
     
    gotoxy(5,9);
     
    cout<<"Fusorario:___"
        
        }
    int main()
    char risp[2];
      
    char buffer[2];
     
    FILE *aero;
    if((
    aero=fopen("aeroporto.txt","r"))==NULL)aero=fopen("aeroporto.txt","w+");
        else { 
    fclose(aero);
           
    aero=fopen("aeroporto.txt","r+");
         }
      
    VIS_AEROPORTO();
       
    gotoxy(14,24);
        
    cout<<"Premi * per terminare";
        
    gotoxy(12,5);
        
    gets(aeroporto.id_aeroporto);
        while (
    strcmp(aeroporto.id_aeroporto,"*")!=0)
        {
         
    gotoxy(39,5);
         
    gets(aeroporto.nome);
         
    gotoxy(12,7);
         
    gets(aeroporto.citta);
         
    gotoxy(42,7);
         
    gets(aeroporto.nazione);
         
    gotoxy(15,9);
         
    cin>>(aeroporto.fusorario);
         
    aeroporto.canc=0;
         
    fwrite(&aeroporto,1sizeof(struct aero1),aero);                      
         
    VIS_AEROPORTO();                     
         
    gotoxy(14,24);
         
    cout<<"Premi * per terminare";
         
    gotoxy(12,5);
         
    gets(aeroporto.id_aeroporto);     
        }
        
    fclose(aero);   
        
          
    system ("PAUSE");
        return 
    EXIT_SUCCESS;      
        } 

    NOn c'è la conferma dei dati inseriti xk intanto l'ho tagliata! Provatelo

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Subito dopo la cin inserisci

    cin.ignore();
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie mille! Ora funziona! Ma aprendo il file non mi inserisce ne il fusorario ne il canc! Perché questo?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da michela85cancro
    Grazie mille! Ora funziona! Ma aprendo il file non mi inserisce ne il fusorario ne il canc! Perché questo?
    I due valori sono registrati in binario, non in ASCII, quindi magari non te ne accorgi con un editor ma ci sono ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    ok hai ragione!GRAZIE MILLE! se c sono altri problemi vi farò sapere! grazie ankora!

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.