В настоящее время я проверяю, получил ли я данные, сохраненные в «data.txt», так что это единственный код, который у меня есть для функции accept. Каждый раз, когда я в конце файла, программа вылетает. Я могу получить все данные должным образом, только сбой - моя проблема.
вот мой код:
#include<iostream>
#include<conio.h>
#include<windows.h>
#include<fstream>
using namespace std;
void clrscr()
{
system("cls");
}
struct node
{
string data;
struct node *yes;
struct node *no;
};
node *pnode,*root;
int level=0;
struct node *add();
void accept();
int main()
{
char ch,ch2;
pnode=(node*)malloc(sizeof(node));
pnode->yes=NULL;
pnode->no=NULL;
pnode->data="Do you love me?: ";
root=(node*)malloc(sizeof(node));
root=pnode;
root->yes=NULL;
root->no=NULL;
root=pnode;
accept();
while(1)
{
clrscr();
ch2='y';
cout<<root->data;
ch=getche();
if(ch=='y')
{
root=root->yes;
if(root==NULL)
{
cout<<"\nI got you !! ";
root=pnode;
cout<<"\n\nAnother Round?? [y/n]";
ch2=getche();
if(ch2=='n')
break;
}
}
else
if(ch=='n')
{
if(root->no==NULL)
{
root->no=add();
root=pnode;
cout<<"\n\nAnother Round?? [y/n]";
ch2=getche();
if(ch2=='n')
break;
}
else
root=root->no;
}
}
}
struct node *add()
{
clrscr();
string str1,str2;
node *nNode,*nNode2;
cout<<"What's on your mind? : ";
getline(cin,str1);
cout<<"What question suits that thing? : ";
getline(cin,str2);
nNode=(node*)malloc(sizeof(node));
nNode2=(node*)malloc(sizeof(node));
nNode->data=str2;
nNode2->data="Is it "+str1+"? ";
nNode2->yes=NULL;
nNode2->no=NULL;
nNode->yes=nNode2;
nNode->no=NULL;
fstream File("data.txt", ios::out | ios::app);
File<<nNode->data<<endl;
File<<nNode2->data<<endl;
File.close();
fstream File1("level.txt", ios::out | ios::app);
File1<<level<<endl;
File1<<level+1<<endl;
File1.close();
fstream File2("branch.txt", ios::out | ios::app);
File2<<level<<endl;
File2<<level+1<<endl;
File2.close();
level++;
return nNode;
}
void accept()
{
string dat[256],dat1;
int i=0,lvl[256],brnch[256],lvl1,brnch1;
root=root->no;
fstream file;
file.open("data.txt", ios::in | ios::binary);
while(file.good())
{
getline(file,dat1);
cout<<dat1<<endl;
getch();
}
file.close();
}