Witam
Mam fragment kodu, w ktorym staram sie pobrac linie z pliku , obciac niechciane znaki, zapisać do stringa, zapisac do struktury i ponownie wczytac linię, niestety pogubiłem sie ze wskaźnikami do tablic itp.
pierwsza petla wykonuje sie a na drugiej wywala sie program. pierwsza wpisana dana jest ok.
struct Book {
char id;
string
title,
author,
year ;
int lp;
};
....
void wczytaj(Book *tablica[], int &dlugosc){
char nazwaPliku[80];
string komorka[30];
ifstream plik_bib;
string linia;
char linia_pom[100];
int pom=0,pom2=0;
Book* dane_art;
dane_art=new Book;
cout <<"Podaj nazwe pliku: ";
cin >> nazwaPliku;
plik_bib.open( nazwaPliku, ios::in );
if(!plik_bib){
cout<<"Nieudane otwarcie pliku "<<nazwaPliku<<" "<<endl;
exit(1);
}
do
{
tablica[dlugosc] = new Book;
*tablica[dlugosc] = *dane_art;
for(int i=0;!plik_bib.eof();i++) {
getline(plik_bib,linia);
if (sprawdz(linia,"@book")==1) {
pom++;
tablica[pom-1]->lp=pom; // tutaj wywala sie druga pętla
zapisz(tablica,pom); // zapis do pliku
cout << tablica[pom-1]->lp <<endl;
for (int i=0; i<=pom;i++){
cout <<tablica[i]->lp << endl;
}
}
if ((sprawdz(linia,"author=")==1)||(sprawdz(linia,"author =")==1)) {
pom2=szukajZnak(linia,'"');
linia.erase(0,pom2+1);
linia.erase(linia.end()-2,linia.end());
tablica[pom-1]->author=linia;
zapisz(tablica,pom);
cout << linia << endl;
}
...
while(!plik_bib.eof());
delete dane_art;
delete tablica;
int main()
{
const int MAX_REKORD=100;
Book* dane_plik[MAX_REKORD];
int dlugosc=10;
...
wczytaj(dane_plik,dlugosc);
...
for(int i=0;i<dlugosc;i++) {
delete dane_plik[i];
return 0;
Prawdopodobnie coś robie nie tak z pamiecią. Jestem początkujący :)