Scrittura in file c++

di il
4 risposte

Scrittura in file c++

Salve devo sviluppare un codice per scrivere all'interno di un file esame e relativo voto
L'algoritmo gira, stampa a video i dati letti da file
ma nel file .txt viene scritto soltanto il nome dell'esame seguito da caratteri strani e non il voto dell'esame.
Potete darmi una mano? Grazie

#include <iostream>
using namespace std;
#define LEN 100
typedef struct {
char esame [LEN];
int voto;
} Esame;

void stampa(FILE *fp, Esame Es);

int main (){
FILE *fp;
int dim, i;
Esame Es;
fp=fopen("E:/ricapitola.txt", "ab");
if (fp){
cout<<"Quanti esami vuoi inserire?"<<endl;
cin>>dim;
fflush(stdin);
for (i=0;i<dim;i++){
cout<<"Inserisci esame:";
cin>>Es.esame;
cout<<"Inserisci voto:";
cin>>Es.voto;
// scrivo su file
fwrite(&Es, sizeof(Esame), 1, fp);
fflush(stdin); // svuoto il buffer
}
fclose(fp);
}
else
cout<<" Errore nell'apertura file";
stampa(fp, Es);
return ;
}

void stampa(FILE *fp, Esame Es){
fp= fopen("E:/ricapitola.txt", "rb");
if(fp==NULL)
cout<<"Errore apertura file";
else {
cout<< ":: ESAMI ::"<<endl;
while (fread(&Es,sizeof(Esame), 1, fp )>0 ){

cout<<"Esame:"<<Es.esame<<endl;
cout<<"voto:"<<Es.voto<<endl;
}
fclose(fp);
}
}

4 Risposte

  • Re: Scrittura in file c++

    Il file che stai scrivendo non è testo ma binario, quindi i dati presenti (la struttura Esame) sono salvati così come sono presenti in memoria.
  • Re: Scrittura in file c++

    Ho provato a lavorare su un file .dat ma da gli stessi errori
  • Re: Scrittura in file c++

    L'estensione del file non ha nulla a che vedere con il tipo di dati che ci scrivi all'interno.

    L'estensione fa solo parte del nome: il tuo file si potrebbe chiamare anche ciribiribin.scherzetto e non cambierebbe assoluttamente nulla.

    Sei tu (piu' specificatamente il tuo codice) che decidi come scrivere i dati nel file.

    E questa decisione l'hai presa (anche se non te ne sei accorto ) nel momento in cui hai utilizzato la fwrite.

    Riguardati il pezzetto di codice in cui utilizzi la fwrite, e pensa bene a che cosa stai facendo (sia tu che il tuo codice, ovviamente )
  • Re: Scrittura in file c++

    corsara1973 ha scritto:


    gli stessi errori
    NON sono errori.

    Studia IN TEORIA la differenza tra dati scritti in ASCII e in binario. Le BASI della programmazione, prima di scrivere codice.
Devi accedere o registrarti per scrivere nel forum
4 risposte