Registros y ficheros binarios

Cristina Rivera Hernando

#include <stdio.h>

typedef struct {
       int clave;
       char datos[20];
    } TIPOREG;


void CrearFichero( void )
{
  FILE *fp;
  TIPOREG treg  [5] = { {2001,"MADRID"},
                        {2002,"SEVILLA"},
                        {2005,"MURCIA"},
                        {2006,"AVILA"},
                        {2020,"BILBAO"}
                       };

  fp = fopen("DATOS.DAT","wb");
  fwrite(treg ,sizeof(TIPOREG),5,fp);
  fclose(fp);
}

void main()
{
 FILE *fp;
 TIPOREG reg;

 CrearFichero();

 fp = fopen ("DATOS.DAT","rb");

 // Leemos el primer registro
 fread(&reg,sizeof(reg),1, fp );
 printf("A) %d, %s \n",reg.clave, reg.datos );
 printf("Posicion = %d \n", ftell(fp)/sizeof(reg));

 // Nos posicionamos en el penúltimo
 fseek(fp,-2*sizeof(reg), SEEK_END);
 fread(&reg,sizeof(reg),1, fp );
 printf("B) %d, %s \n",reg.clave, reg.datos );
 printf("Posicion = %d \n", ftell(fp)/sizeof(reg));

 // Nos movemos dos posiciones hacia atrás
 fseek(fp,-2*sizeof(reg), SEEK_CUR);
 fread(&reg,sizeof(reg),1, fp );
 printf("C) %d, %s \n",reg.clave, reg.datos );
 printf("Posicion = %d \n", ftell(fp)/sizeof(reg));

 // Nos situamos después del primero
 fseek(fp,1*sizeof(reg) ,SEEK_SET);
 fread(&reg,sizeof(reg),1, fp );
 printf("D) %d, %s \n",reg.clave, reg.datos );
 printf("Posicion = %d \n", ftell(fp)/sizeof(reg));

 fclose(fp);

 getchar();
}
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s