I'm trying to write a linked list into a binary file using this function
void agregar_cliente(string name, string alias, string telefono, string email) {
if (principio == nullptr) {
principio = new Client_node;
principio->name = name;
principio->alias = alias;
principio->telefono = telefono;
principio->email = email;
principio->numero_de_ventas = 0;
principio->siguiente = nullptr;
actual = principio;
}
else {
actual = principio;
while (actual->siguiente != nullptr) {
actual = actual->siguiente;
}
actual->siguiente = new Client_node;
actual->siguiente->siguiente = nullptr;
actual = actual->siguiente;
actual->name = name;
actual->alias = alias;
actual->telefono = telefono;
actual->email = email;
actual->numero_de_ventas = 0;
}
ofstream escritura_clientes;
escritura_clientes.open("clientes.bin",ios::out,ios::binary);
if (escritura_clientes.is_open())
{
actual = principio;
while (actual != nullptr) {
escritura_clientes.write(reinterpret_cast<char*> (actual), sizeof(Client_node));
actual = actual->siguiente;
}
}
escritura_clientes.close();}
Problem is, that it will randomly save the email. Sometimes it does sometimes it doesn't, in both situations, I don't make any changes.
This is the list I'm using:
struct Client_node {
string name;
string alias;
string telefono;
string email;
int numero_de_ventas;
Client_node* siguiente;
};
Client_node* principio;
Client_node* actual;