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); }
}
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
0