Файл bin в двоичном дереве
У меня есть проблема с чтением файла bin в двоичное дерево. Функция "SaveFile", вероятно, не очень хороша, но функция "readFile" - это проблема.Например, я сохраняю 3 узла в файл. bin , и когда я читаю файл обратно, появляется узел, который я не записывал в файл.Я имею в виду, что есть узел, добавленный в двоичное дерево, когда я пытаюсь прочитать его из файла. Я не думаю, что он остановится, когда это будет "ЭОФ". Я могу прочитать снова один раз, когда это будет "EOF".
Мне нужна помощь с чтением данных в память, но сохранение данных в двоичный файл все еще не уверен, потому что я не знаю, какая из этих 2 функций вызывает проблему.
не могли бы вы мне помочь?
// Чтение файла в память
void readFile(Node * & amp; root, ifstream & file)
{
файл.seekg(0, ios:: end);
если (файл.tellg() == 0)
cout << "файл пуст!" < & lt; endl;
ещё
{
файл.seekg(0, ios:: beg);
хотя(!файл.ВФ())
{
Узел *newNode = новый узел;
file. read ((char*)& newNode- & gt;data, sizeof(Person));
insertNode (root, newNode);
}
cout < & lt; "файл был загружен.\северный";
}
}
void saveFile (Node *root, ofstream & file)
{
if (root != NULL)
{
файл.писать (к(char*)&ампер;корень-&ГТ;данных,оператор sizeof(человек));
saveFile (root - & gt;Left, file);
saveFile (root - & gt;Right, файл);
}
}
void insertNode(Node * & amp; root, Node *newNode)
{
newNode - > Left = NULL;
newNode - > Right = NULL;
if (root = = NULL) root = newNode;
ещё
{
Узел * curr = корень;
в то время как (правда)
{
if (newNode- & gt;data.ИД &ЛТ; ту-и GT;сведения.Идентификатор)
{
if (curr- & gt;Left != NULL)
curr = curr - & gt;слева;
ещё
{
curr- & gt;Left = newNode;
перерыв;
}
}
else if (curr- & gt;Right != NULL)
curr = curr - & gt;справа;
ещё
{
curr- & gt;Right = newNode;
перерыв;
}
}
}
}
Что я уже пробовал:
Я много раз пытаюсь изменить функцию readFile,но у меня ничего не получается.