Odczyt / Zapis bianrnie

0

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. ?

0

odczytywać masz dokładnie tak samo jak zapisujesz:

void Tablica::Load_file(fstream &inp)
  {
   inp.read((char*)&n, sizeof(int));
   // tu ewentualnie przydzielenie pamięci dla tab
   inp.read((char*)tab,n*sizeof(double));
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1