PDA

Visualizza la versione completa : [C++] Errore di compilazione su funzione fwrite()


michela85cancro
10-12-2009, 10:59
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


#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 gotoxy( int x, int y ){
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle( STD_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,1, sizeof(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!

KrOW
10-12-2009, 11:39
Ciao . . . Non devi dereferenziare il puntatore aero nella chiamata a fwrite . . .

michela85cancro
12-12-2009, 11:27
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!



#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 gotoxy( int x, int y ){
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle( STD_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,1, sizeof(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

oregon
12-12-2009, 11:37
Subito dopo la cin inserisci

cin.ignore();

michela85cancro
12-12-2009, 11:50
Grazie mille! Ora funziona! Ma aprendo il file non mi inserisce ne il fusorario ne il canc! Perché questo?

oregon
12-12-2009, 11:53
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 ...

michela85cancro
12-12-2009, 18:16
ok hai ragione!GRAZIE MILLE! se c sono altri problemi vi farò sapere! :ecco: grazie ankora!

Loading