Dev - C++ - Archivo Binario

 
Vista:
sin imagen de perfil
Val: 34
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Archivo Binario

Publicado por Saint (20 intervenciones) el 07/09/2020 18:20:17
Hola buenos días tengo un problema con el siguiente ejercicio, no se si mi código este bien planteado, ya que en la parte de querer leer el archivo me salen errores he intentado hacer varias cosas pero no me sale, de antemano gracias por su tiempo.

1. Declarar un struct con dos campos de información, id y nombre:
struct TRegistro{
int id;
char nombre[max];
};

Dentro del main:
2. Declarar e inicializar un arreglo de registros, de la siguiente manera:
TRegistro arrayRecord[ ] = {1,"Juan",2,"Paco",3,"Pedro",4,"Ana",5,"Rocío"};
 
3. Crear un archivo binario en modo de escritura y, con fwrite escribir en una sola
instrucción los cinco registros ingresados en arrayRecord
Dentro del main:

3. Cerrar el archivo y volver a abrirlo, ahora en modo de lectura
 
4. En una variable simple de tipo TRegistro, llamada elem, leer
con fread el primer registro (1 Juan) y mostrarlo en pantalla
 
5. Continuar leyendo y mostrando uno a uno el resto de los
registros hasta el fin del archivo
 
6. Cerrar el archivo
------------------------------------------------------------------------------------------------------------------------------------------
Codigo:

#include<iostream>
#include<string.h>
#include<stdio.h>
#define MAX 10
using namespace std;

struct TRegistro{
int id;
char nombre[MAX];
};

int main(void){

TRegistro arrayRecord[ ] = {1,"Juan",2,"Paco",3,"Pedro",4,"Ana",5,"Rocío"};

FILE * pf;
int i=0;
if ( (pf = fopen(" C:\\DATOS.DAT", "wb")) == NULL)
cout<<"imposible escribir en el archivo.\n";
else {
fwrite(&arrayRecord,sizeof(TRegistro),5,pf);
cout<<"\nGUARDADO EN MEDIO EXTERNO";
fclose(pf);
}

TRegistro elem;
FILE * pf1;
if ( (pf1 = fopen("C:\\DATOS.DAT", "rb")) == NULL)
cout<<"imposible leer en el archivo.\n";
else {
cout<<endl<<"LEIDO DE ARCHIVO: "<<endl;
fread(&elem[i].id,sizeof(TRegistro),5,pf1);
fread(&elem[i].nombre,sizeof(TRegistro),5,pf1);
while (!feof(pf1)) {
cout<<elem[i].id<<" ";
cout<<elem[i].nombre<<" ";
i++;
fread(&elem[i],sizeof(TRegistro),5,pf1);
}
fclose(pf1); }

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Archivo Binario

Publicado por Nacho (181 intervenciones) el 07/09/2020 18:41:04
Tienes definida una estructura TRegistro, le asignas a elem una sola estructura, y luego quieres acceder con un interador. Tendrías que asignarle a elem un array de estructuras, por ejemplo TRegistro elem[10];.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar