Zapis/Odczyt listy jednokierunkowej do pliku binarnego

0

Witam! mam problem z napisanie funkcji ktora zapisywalaby dane z mojej bazy danych do pliku binarnego i odczytywala je. Potrafie zapisac do pliku txt ,ale do binarnego niestety nie moge sobie poradzic. Mogłby ktoś dać mi wskazówke jak to zrobic?
oto część kodu;
lista jest zainicjowoana w nastepujacy sposob

#include "stdafx.h"
#include "baza.h"
#include "conio.h"
#include "stdlib.h"
#include <iostream>
#include <fstream>
using namespace std;
void Initialize() //funkcja inicjalizuje listę
{
	root=new ANIMAL; //tworzymy pierwszy element listy - root
	root->Name[0]=0; //wpisujemy dowolne dane do struktury
	root->LatinName[0]=0;
	root->Group[0]=0;
	root->Legs=0;
	root->Environment[0]=0;
	root->Next=NULL;//root jest ostatnim elementem listy zatem wskaźnik "Next" ma wartość NULL
	current=root;//ustawiamy wskaznik "current" listy na element "root"
}
struct ANIMAL //definicja rekordu
{
char Name[20];
char LatinName[20];
char Group[20];
int Legs;
char Environment[20];
ANIMAL *Next; //adres kolejnego elementu listy
};
static ANIMAL *AddAnimal() //dodaje rekord do listy
{
	current=GetLast(); //zwraca adres ostatniego elementu
	ANIMAL *nowy=new ANIMAL; //tworzymy nowy wskaznik-element operatorem new
	current->Next=nowy; 
	nowy->Next=NULL; //lepiej zadeklarowac do NULL
	return nowy;
}
void ZapiszDane()
{   FILE* plik;
	plik = fopen("dane.bin","wb"); // otwieramy plik do zapisu binarnego
	if(plik!=NULL)
	{
		current=root;
		while(current->Next!=NULL)
		{
			current=current->Next;
			fwrite(current,sizeof(ANIMAL),1,plik);
			
		}
		fclose(plik);
	}
	else cout<<"Nie mozna odczytac pliku"<<endl;
	system("PAUSE");
}

kiedy otworze plik data.bin w notatniku wyglada to tak;
kot ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍfelis ÍÍÍÍÍÍÍÍÍÍÍÍÍÍssak ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ udomowiony ÍÍÍÍÍÍÍÍÍ

0

Stringi terminowane są zerem, po którym może być cokolwiek (a że dalszej części tablic nie ruszasz, to są tam śmieci)... Mnie bardziej ciekawi, czy na pewno chcesz zapisać do pliku WSKAŹNIK? Jak go potem odczytasz, to idę o zakład, że będzie on wskazywał na Toruń...

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