Hej, cwicze binarnie zapisywac odczytywac z pliku.
i bylo by okey, tylko nie wiem gdzie jest blad, ze program zapisaną do pliku jedna tablice, po ponownym odpaleniu, wczytuje dwie, w tym pierwsza ta ktora byla zapisana plus jedna dodatkowa ale wyzerowana. Nie kminie skad to sie bierze.
//////////////////////////zapis pliku/////////////////////////
plik.open("dane.dat", ios::binary|ios::out|ios::trunc);
if(pnt!=0)
{
for(int i=0; i<pnt; i++)
{
baza[i]->Save_file(plik);
}
}
plik.close();
///////////////////tutaj metoda klasy////////////////
void Tablica::Save_file(fstream& out)
{
out.write((char*)&n, sizeof(int));
out.write((char*)tab, n*sizeof(double));
}
//////////////////wczytywanie///////////////////////
if(plik.good())
{
while(!plik.eof())
{
plik.read((char*)&temp, sizeof(int));
add_tab(temp, nazwa);
plik.read((char*)baza[pnt-1]->adres(), temp*sizeof(double));
baza[pnt-1]->srednia();
}
}
plik.close();
///////////////////////////////////////////////////////
najpierw zapisuje rozmiar tablicy a pozniej jej elementy, tak samo je odczytuje. I tu jest okey, tablica jest dobrze wczytywana. Tylko nie wiem skad bierze sie jedna ponad rozmiar, o 0 elementach?? Przeciez wczytywana jest dopoki pokaze sie eof(). a jak zapisujemy jedna, no to plik powinien sie konczyc po niej. ?