Buonasera a tutti sto svolgendo un esercizio, ma non riesco a farlo funzionare con i puntatori.
Questa è la versione senza puntatori e tutto fila liscio:
#include <iostream>
#include <fstream>
using namespace std;
struct musica{
int ID;
char nomeArtista[50];
char genere[30];
char nazionalita[50];
};
const string NOMEARCH="musica.dat";
int main()
{
musica artista;
//artista=new musica;
ofstream fout(NOMEARCH.c_str(), ios::out | ios::binary);
cout<<"Inserire l'ID dell'artista: ";
cin>>artista.ID;
while(artista.ID!=0){
cin.ignore();
cout<<"Inserire il nome dell'artista: ";
cin.getline(artista.nomeArtista, 50);
cout<<"Inserire il genere dell'artista: ";
cin.getline(artista.genere, 30);
cout<<"Inserire la nazionalita' dell'artista: ";
cin.getline(artista.nazionalita, 50);
fout.write((char*) &artista, sizeof(artista));
cout<<"Inserire l'ID dell'artista: ";
cin>>artista.ID;
}
fout.close();
ifstream fin(NOMEARCH.c_str(), ios::in | ios::binary);
while(fin.read((char*) &artista, sizeof(artista))){
cout<<"ID artista: "<<artista.ID<<endl;
cout<<"Nome artista: "<<artista.nomeArtista<<endl;
cout<<"Genere: "<<artista.genere<<endl;
cout<<"Nazionalita' "<<artista.nazionalita<<endl;
}
fin.close();
//delete []artista;
return 0;
}
Questa invece è la versione con i puntatori:
#include <iostream>
#include <fstream>
using namespace std;
struct musica{
int ID;
char nomeArtista[50];
char genere[30];
char nazionalita[50];
};
const string NOMEARCH="musica.dat";
int main()
{
musica* artista;
//artista=new musica;
ofstream fout(NOMEARCH.c_str(), ios::out | ios::binary);
cout<<"Inserire l'ID dell'artista: ";
cin>>artista->ID;
while(artista->ID!=0){
cin.ignore();
cout<<"Inserire il nome dell'artista: ";
cin.getline(artista->nomeArtista, 50);
cout<<"Inserire il genere dell'artista: ";
cin.getline(artista->genere, 30);
cout<<"Inserire la nazionalita' dell'artista: ";
cin.getline(artista->nazionalita, 50);
fout.write((char*) &artista, sizeof(artista));
cout<<"Inserire l'ID dell'artista: ";
cin>>artista->ID;
}
fout.close();
ifstream fin(NOMEARCH.c_str(), ios::in | ios::binary);
while(fin.read((char*) &artista, sizeof(artista))){
cout<<"ID artista: "<<artista->ID<<endl;
cout<<"Nome artista: "<<artista->nomeArtista<<endl;
cout<<"Genere: "<<artista->genere<<endl;
cout<<"Nazionalita' "<<artista->nazionalita<<endl;
}
fin.close();
//delete []artista;
return 0;
}
Dove sbaglio?