Ir al contenido


Foto

Modificar todos los registros de un Archivo en C


  • Por favor identifícate para responder
1 respuesta en este tema

#1 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 mensajes
  • LocationArgentina

Escrito 25 junio 2012 - 07:22

Hola como estan!

Tengo el siguiente problema.
Quiero modificar algunos campos de todos los registros de un archivo en el que tengo informacion de equipos de futbol.

La estructura es la siguiente


cpp
  1. struct equipos
  2.       {
  3.       int codigoequipo;
  4.       char nombre[30];
  5.       char dt[30];
  6.       char barrio[30];
  7.       int puntos;
  8.       int partidosganados;
  9.       int partidosempatados;
  10.       int partidosperdidos;
  11.       int estado;
  12.       int borrado;
  13.       };

Estos son puntos, partidos ganados, partidos perdidos y partidos empatados.
Ya que estoy haciendo un sistema que gestiona un torneo de futbol y despues de iniciar un nuevo torneo deberia reiniciar estos valores.
Crei que con solo recorrer el archivo y modificar como lo habia hecho anteriormente me saldria pero entra en un ciclo infinito, dejo el codigo que tengo...

   
cpp
  1.     fread(&equipo, sizeof(struct equipos), 1, archivoequipos);         
  2.     while (!feof(archivoequipos))
  3.           { 
  4.           fseek(archivoequipos, sizeof(struct equipos)*(-1L), 1);
  5.           fread(&equipo, sizeof(struct equipos), 1, archivoequipos);         
  6.           equipo.puntos=0;
  7.           equipo.partidosempatados=0;
  8.           equipo.partidosganados=0;
  9.           equipo.partidosperdidos=0;         
  10.           fseek(archivoequipos, sizeof(struct equipos)*(-1L), 1);
  11.           fwrite(&equipo, sizeof(struct equipos), 1, archivoequipos);         
  12.           }

 

Despues de ejecutar esto, crei que  todos los registros quedarian modificados pero como dije, se queda en un ciclo infinito, nunca llega a fin de archivo?

Saludos!
  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 26 junio 2012 - 06:32

¿Que tal si haces algo así?


cpp
  1.   archivoequipos = fopen("file.p", "rb+");
  2.   int i=0;
  3.   while (i<Nequipos){
  4.     fseek(archivoequipos, sizeof(struct equipos)*i, SEEK_SET);
  5.     fread(&equipo, sizeof(struct equipos), 1, archivoequipos);
  6.     equipo.puntos=0;
  7.     equipo.partidosempatados=0;
  8.     equipo.partidosganados=0;
  9.     equipo.partidosperdidos=0;
  10.     fseek(archivoequipos, sizeof(struct equipos)*i, SEEK_SET);
  11.     fwrite(&equipo, sizeof(struct equipos), 1, archivoequipos);
  12.     i++;
  13.   }

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.