Página 1 de 1

¿guardar un arreglo en archivo binario y leerlo de nuevo?

Publicado: 06 Jun 2013, 17:53
por Synth3tik0
Según la funcion savearray() guarda el array, pero.. y ahora como leo el archivo(ahora q esta convertido en binario)?

la funcion agregar() no se si le estoy pasando bien el arreglo, cuando la mando a llamar en main no hace nada porque no me muestra los cout que tiene dentro ni me espera a que escriba los datos, que estoy haciendo mal?

mas que nada trato de hacer dos funciones uno que guarde un arreglo y otra que lo lea y lo "copie" a otro arreglo que tenga en el programa o al mismo, no se si se pueda pero la idea es poder modificarlo sin tener acceder al binario y ya al final con todos lo cambios solo guardar..
#include <fstream>
#include <iostream>
#include <conio.h>
#include <cstring>
#include <string>
#define pausa cin.get();
using namespace std;

class libros{
    public:
    bool disponible = true;
    string nombre;
    string autor;
    };
//void saveArray(libros* array, int length);
void saveArray(libros* array, int length)
{
    ofstream output("datos.txt",ios::out|ios::binary);
    for(int a=0;a<length;a++)
    {
        output.write((char *) array,sizeof(array));
    }
}

int agregar(libros array[]){
    for(int i;i<10;i++){
            string nombre;
            string autor;

            cout << "\nIngrese el nombre: ";
            fflush(stdin);
            getline(cin,nombre);
            array[i].nombre = nombre;
            cout << "\nIngrese el autor: ";
            fflush(stdin);
            getline(cin,autor);
            array[i].nombre = autor;
            return 0;
    }
}

int main()
{
    libros milibro[10];
    cout << "Agregando libros.." << endl ;
    agregar(milibro);
    getch();
    saveArray(milibro, 10);

}

Re: ¿guardar un arreglo en archivo binario y leerlo de nuevo

Publicado: 08 Jun 2013, 01:11
por KHC
No es un arreglo, un arreglo es un decorator y son cosas muy distintas! Es un vector, bidimensional o unidimensional!

Re: ¿guardar un arreglo en archivo binario y leerlo de nuevo

Publicado: 08 Jun 2013, 08:05
por velario
Te faltan datos para poder implementarlo bien, porque por ejemplo, cuando quieras leer los datos como sabes la longitud del array?.
De todas formas, yo hago algo parecido en Delphi, pero en lugar de usar una clase para almacenar los datos uso una estructura, a la hora de escribir a disco vuelco directamente los datos al archivo usando el tamaño de la estructura.
A la hora de leer, lo único que tendrías que hacer seria reservar memoria para una nueva clase, leer los datos del archivo y volcarlo directamente a la memoria de la clase y si todo va bien deberías tener los datos recuperados.
Como usas array (y sabiendo su longitud) pues seria lo mismo, reservas para cada clase del array memoria y después vuelcas de uno en uno.

Saludos.