Jump to content


Photo

Modificar todos los registros de un Archivo en C


  • Please log in to reply
1 reply to this topic

#1 GUN10

GUN10

    Advanced Member

  • Miembros
  • PipPipPip
  • 79 posts
  • LocationArgentina

Posted 25 June 2012 - 07:22 PM

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
  • 4107 posts
  • LocationMadrid - España

Posted 26 June 2012 - 06:32 PM

¿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.