• Domingo 15 de Diciembre de 2024, 22:59

Autor Tema:  Ayuda Para Añadir A Un Fichero Binario  (Leído 764 veces)

tron2004

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Ayuda Para Añadir A Un Fichero Binario
« en: Martes 1 de Junio de 2004, 13:39 »
0
Hola :comp:
Necesito introducir registros en un fichero con toda las estaciones de metro, en un principio el programa me funciona bien, los añade al final del fichero,pero al llegar al registro 75 me borra el primer registro, el 76 me borra el segundo y asi, vamos que solo me permite tener a la vez 75 registros.
los registros son en forma de estructura de tres campos.
 el fichero lo abro como ab+
si alguien tiene alguna pista...

gracias
incluyo el programa y el fichero con las estaciones que crea, para que no tengais mas que probar:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>


#define NOM_FICHERO "metro.bin"
#define NOMBRE  20
#define MAX_LINEAS 12

struct lineas Introducir_Datos (struct lineas estacion);

enum estados {KO, OK};

struct lineas
{
   char nombre[NOMBRE];
   unsigned short int linea;
   enum estados estado;
};

void main ()
{
   struct lineas estacion;
   FILE *fichero;

   fichero = fopen (NOM_FICHERO,"ab");

   rewind (fichero);
   estacion = Introducir_Datos(estacion);

   while(strlen (estacion.nombre)!= 0 )
   {
      fwrite (&estacion, sizeof(estacion),1,fichero);
      estacion = Introducir_Datos(estacion);
   }
   rewind (fichero);
   fread  (&estacion, sizeof(estacion),1,fichero);

   while(!feof(fichero))
   {
     printf ("\n\n\t Linea : %d", estacion.linea);
     printf ("\n\t Estacion : %s", estacion.nombre);
     printf ("\n\t Estado : %d", estacion.estado);
     fread  (&estacion, sizeof(estacion),1,fichero);
   }
   getch();
   fclose (fichero);
}
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

tron2004

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Ayuda Para Añadir A Un Fichero Binario
« Respuesta #1 en: Miércoles 2 de Junio de 2004, 13:27 »
0
:D  ya esta solucionado, era por la cantidad de lineas que es capaz de MOSTRAR el msdos bajo windows

 gracias