Leer, escribir valor de variables a archivo

Creo que ya te mande un mensaje sobre esto. Este otro aclara bastante más mi duda y la hace, espero más fácil de resolver:
He encontrado este código que hace exactamente lo que yo quiero hacer, salvo que necesito pasar a la función leer_datos el valor de una estructura:criatura. X y criatura. Y en vez de x:
void leer_datos(char *nombre,int elementos,float *x,float *y){
//abrir archivo
ifstream in(nombre,ios::binary);
//leer datos
for(int elem=0;elem<elementos;elem++){
in.read( (char *)&x[elem],sizeof(float) );
in.read( (char *)&y[elem],sizeof(float) );
}
}
y la funcion main:
main(){
int elementos=20;
float x[elementos],y[elementos];
leer_datos("fichero.dat",elementos,x,y);
}
Asi que en vez de x e y, que tengo que pasar a leer_datos?Valdria esto?
leer_datos("fichero.dat",elementos,criatura) y modificar leer_datos para que solo coja tres argumentos y dentro hacer:
for....
in.read( (char *)&criatura[elem].X,sizeof(float) );
in.read( (char *)&criatura[elem].Y,sizeof(float) );
No creo que funcione.(Ahora no tengo el programa aquí así que no puedo probarlo).

1 respuesta

Respuesta
1
Otra vez ouduk!
A la pregunta que m haces, la respuesta es si. Se puede hacer sin ningún problema.
No m indicas si criatura es un array de estructuras o de objetos, de todas formas da lo mismo. Si la tipo de la estructura que forma una criatura es st_criatura la declaración de tu función leer_datos debería ser algo tal que así:
void leer_datos(char * fic,int elem,st_criatura * array_criaturas);
Otra cosa. Yo es que la función la haría de otra forma. Yo haría que el primer dato guardado sobre el archivo fuera el numero de criaturas, de forma que tu función kedaria así:
void leer_datos(char * fic, st_criatura * array_criaturas)
La implementacion seria algo asi
void leer_datos(char * fic,st_criatura * array_criaturas)
{
int elem;
//abrimos el fichero para leer
ifstream input(fic, ios::in, 0 );
//leemos el numero de elementos
input >> elem;
//reservar memoria en el array para elem criaturas
....
//bucle for para leer uno a uno las coordenadas
for(int i=0;i<elem;i++)
{
//leer coordenada X del elemento i
//leer coordenada Y del elemento i
}
input.close();
}
Bueno, y creo que esto es todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas