Buonasera a tutti,
sto provando a modificare un elemento di un file dichiarato in una classe.Quando modifico il file sembra che tutto vada bene perché questa mi viene stampata a video.
Ma il problema sta quando voglio stampare tale elemento in un'altra funzione.Quando la stampo a video in altra funzione (nel mio caso la funzione è visualizza()) mi escono degli "strani" caratteri.
Secondo la mia opinione il problema sta nella modifica e in specifico nella posizione di f.write e f.read.
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;
#ifndef CLASSI_H
#define CLASSI_H
class classe{
protected:
char nome[20];
public:
void set_classe(char *);
char *get_nome();
classe(){}
~classe(){}
};
#endif
void classe::set_classe(char *n){
strcpy(nome,n);
}
char *classe::get_nome(){
return nome;
}
void carica();
void modifica();
void visualizza();
fstream f;
int main(){
carica();
modifica();
visualizza();
system("pause");
return 0;
}
void carica(){
classe c;
char temp[20];
f.open("classe.dat",ios::out|ios::binary);
cout<<"Nome:";
cin>>temp;
c.set_classe(temp);
f.write((char*)&c,sizeof(classe));
f.close();
}
void modifica(){
classe c;
f.open("classe.dat",ios::out|ios::in|ios::binary);
f.read((char*)&c,sizeof(classe));
if(strcmp(c.get_nome(),"Antonio")==0){
c.set_classe("Carlore");
f.write((char*)&c,sizeof(classe));
f.read((char*)&c,sizeof(classe));
}
f.close();
}
void visualizza(){
classe c;
f.open("classe.dat",ios::in|ios::binary);
cout<<c.get_nome()<<endl;
f.read((char*)&c,sizeof(classe));
f.close();
}
Spero in un vostro aiuto.
Grazie in anticipo.
Spero che possiate aiutarmi.