Tengo un archivo binario y quiero pasar los datos del archivo y registrarlos en una lista dinámica, pero al momento de hacerlo se me crean dos elementos en la lista aparte de los que están en el archivo. Quien me podría ayudar?
este es el código.
Clientes *registrar_cliente(){
Clientes *cliente = new Clientes; //se crea el un nuevo cliente.
if(P_inicio_cliente == NULL){ //en caso que no exista ningun elemento en la lista.
P_fin_cliente = cliente;
P_inicio_cliente = cliente;
cliente->P_ant = NULL;
cliente->P_sig = NULL;
}
else{ //si ya existen elementos en la lista.
cliente->P_ant = P_fin_cliente;
P_fin_cliente->P_sig = cliente;
cliente->P_sig = NULL;
P_fin_cliente = cliente;
}
return cliente;
}
int tomar_datos(){
ifstream clientesIn("clientes.dat",ios::in|ios::binary);
if(!clientesIn){
return -1;
}
else{
Clientes aux; //para tomar los datos del archivo y luego enviarlos a la lista
clientesIn.read((char*)&aux, sizeof(Clientes));
while(!clientesIn.eof()){
*registrar_cliente() = aux;
clientesIn.read((char*)&aux, sizeof(Clientes));
}
clientesIn.close();
}
}