linux中dat文件内容带问号,missing-data

我试图将用户输入的数据保存在链表中,然后将这些数据存储在文件中,以便在输入第二个选项时可以取回它们(如int main()中所述)。 不幸的是,在我将数据写入文件并检查了文件之后,我发现我的数据丢失了并且文件中充满了垃圾。因此我无法找回数据。 有没有解决这个问题的办法? 谢谢。

#include

#include

#include

#include

using namespace std;

fstream fp;

class List{

private:

struct node{

string name;

string surname;

int idNum;

string nationality;

int number;

node *next;

}nod;

node* head;

node* curr;

node* temp;

public:

List();

bool isEmpty(node *head){

if(head==NULL){

return true;

}

else

return false;

}

void AddNode(string addName,string addsurName,int addId,string addNation,int addNumber);

void insertAsFirst(string addName,string addsurName,int addId,string addNation,int addNum);

//void DeleteNode(int delData);

void printList();

void write_linky(string name,string surName,int idNum,string nation,int number);

void read_linky();

}lb;

List::List(){

head=NULL;

curr=NULL;

temp=NULL;

}

void List::insertAsFirst(string addName,string addsurName,int addId, string addNation,int addNum){

node *n = new node;

n->name=addName;

n->surname=addsurName;

n->idNum=addId;

n->nationality=addNation;

n->number=addNum;

n->next = NULL;

head = n;

//last = temp;

}

void List::AddNode(string addName,string addsurName,int addId,string addNation,int addNum){

if(isEmpty(head)){

insertAsFirst(addName,addsurName,addId,addNation,addNum);

}

else{

node* n = new node;

n->next=NULL;

n->name=addName;

n->surname=addsurName;

n->idNum=addId;

n->nationality=addNation;

n->number=addNum;

curr = head;

while(curr->next != NULL){

curr = curr->next;

}

curr->next = n;

}

}

void List::printList(){

curr=head;

cout << "\n\t\t\t\t CUSTOMER INFO" << endl << endl;

cout <

while(curr != NULL){

cout << curr -> name << setw(20) << curr -> surname << setw(20) << curr -> idNum << setw(20) << curr -> nationality << setw(20) << curr -> number << endl << endl;

curr=curr->next;

/*cout<number << endl;

cout<age << endl;

cout<idNum << endl;

cout<name<< endl;

cout<surname << endl;

cout<nationality << endl;

curr = curr->next;

}

*/

}

}

void List::write_linky(string name,string surName,int idNum,string nation,int number)

{

fp.open("Link.dat",ios::out|ios::app);

lb.AddNode(name,surName,idNum,nation,number);

lb.printList();

fp.write((char*)&nod,sizeof(node));

fp.close();

cout<

}

void List::read_linky(){

fp.open("Link.dat",ios::in);

while(fp.read((char*)&nod,sizeof(node)))

{

lb.printList();

//cout<

//getch();

}

fp.close();

//getch();

}

int main(){

List lb;

int idNum,number;

string name,surname,nationality;

char choice,ch;

cout<

cout<

cout<

cin>>ch;

switch(ch){

case '1':

do{

cout<< "Enter name: ";

cin>>name;

cout<< "Enter surname: ";

cin>>surname;

cout<< "Enter identification number: ";

cin>>idNum;

cout<< "Enter your nationality: ";

cin>>nationality;

cout<< "Enter contact number: ";

cin>>number;

lb.write_linky(name,surname,idNum,nationality,number);

//lb.AddNode(number,age,idNum,name,surname,nationality);

cout<

cin>>choice;

}while(choice=='y');

break;

case '2':

lb.read_linky();

break;

}

}

//lb.printList();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值