jeudi 27 juillet 2017

Write and Read functions of fstream on a linked list

I am pretty new to concept of file handling. I am trying to make a To-do list which keeps tracks of every modification in a file. I was unsure on how to implement this so I made a simple linked list and tried reading and writing it to a file but I failed. Here's my code ->

#include <iostream>
#include <fstream>

struct node{
    int val;
    node *next = NULL;
};

void add(node *&head, int val){
    node *newPtr = new node;
    if(head==NULL){
        newPtr->val = val;
        head = newPtr;
    }
    else{
        newPtr->val = val;
        newPtr->next = head;
        head = newPtr;
    }
}

void print(node *head){
    node *temp;
    temp = head;
    while(temp!=0){
        std::cout << (*temp).val << " ";
        temp = temp->next;
    }
    std::cout << std::endl;
}

int main(){

    node *head = NULL;
    int val;
    std::ofstream filout;
    filout.open("data.txt",std::ios::out|std::ios::app|std::ios::binary);

    while(true){
        std::cin>>val;
        if(val==0)
            break;
        else{
            add(head,val);
            filout.write((char*)&head, sizeof(head));
        }
    }

    std::ifstream filin;
    filin.open("data.txt",std::ios::in|std::ios::binary);
    filin.read((char*)&head, sizeof(head));

    print(head);

    return 0;
}

What modifications should I be making to my code in order to get this correct ?

Aucun commentaire:

Enregistrer un commentaire