-1

I've been doing my project and the last thing I need to do is to save to and start reading a structure array from a file on startup of the program, but I can't figure out why the code isn't loading the information of the file. Earlier I asked a similar question and got referred to serialization, which didn't work and I decided to turn my strings into chars and change the functions to work with chars, since I thought that I might be serializing wrong, considering the fact that I first learned how to do it today, unfortunately the program still doesn't read, even though it writes in the file. My style is pretty bad, so I apologize in advance. Here's the code sample only of the struct fread and fwrite with the main:

#include <iostream>
#include <string>
#include<fstream>

using namespace std;

struct property {
    int num;
    char nBrok[50];
    char type[10];
    char adress [70];
    char outlook[20];
    double price;
    double size;
    int nRooms;
    int floor;
    int status;
};
fstream fp;

void fileWrite(property bDanni[], int n) {
    fp.open("dbase.dat", ios::binary | ios::out);
    if (!fp) {
        cout << "\n Error in file \n"; exit(1);
    }
    fp.write((char*)bDanni, sizeof(property) *n);
    fp.close();
}

int fileRead(property bDanni[]) {
    long pos; int n = 0, i; property b;
    fp.open("dbase.dat", ios::binary | ios::in);
    if (!fp) {
        cout << "\n file does not exist\n"; return n;
    }
    fp.seekg(0l, ios::end);
    pos = fp.tellg();
    fp.close();
    n = pos / (sizeof(property));
    fp.open("dbase.dat", ios::binary | ios::in);
    if (!fp) {
        cout << "\n Error in file \n"; exit(1);
    }
    for (i = 0; i < n; i++) {
        fp.read((char*)&b, sizeof(property));
        bDanni[i] = b;
    }
    fp.close();
    return n;
}
int main() {
    property bDanni[100];
    char answer;
    int total = 0;
    cout << "Do you wat to read from the save file?(y/n): ";
    cin >> answer;
    if (answer == 'y') {
      int total = fileRead(bDanni);
    }
}
Ken White
  • 123,280
  • 14
  • 225
  • 444
Levianeer
  • 13
  • 6

1 Answers1

0

The code posted works, the issue was the way the main loaded the function.

Levianeer
  • 13
  • 6