Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Modificar un registro de un fichero en C

Estas en el tema de Modificar un registro de un fichero en C en el foro de C/C++ en Foros del Web. Hola, estoy liado con los ficheros en C ( uso Borland para compilar ) y no consigo hacer una cosa. El caso es que quiero ...
  #1 (permalink)  
Antiguo 02/05/2010, 11:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 41
Antigüedad: 12 años, 9 meses
Puntos: 0
Modificar un registro de un fichero en C

Hola, estoy liado con los ficheros en C ( uso Borland para compilar ) y no consigo hacer una cosa.
El caso es que quiero modificar un registro de una estructura dentro de un fichero, pero no quiero cambiar toda la fila.

Por ejemplo si es una tabla del tipo:
1 Real Madrid 40ptos
2 Barcelona 39ptos
3 Valencia 36ptos
...
Yo lo que quiero es modificar solo los puntos del Barcelona por ejemplo, poner un 42 en lugar del 39, pero el caso es que si solo modifico ese valor ( por ejemplo, clasificacion.puntos ) en los demás campos de esa fila me sale 'basura' ( cosas raras, dibujitos... ) y yo quiero que se quede todo igual pero solo se cambie ese campo.

Mi código sería el siguiente:
Cita:
struct Calendario{
int n;
char local[30];
int golesl;
char visitante[30];
int golesv;
char goleadores[200];
};

void IrPartido(int jornada, FILE *fcalendario){
int goles_local, goles_visitante;

srand(time(NULL));
goles_local = rand() % (5+1);
goles_visitante = rand() % (5+1);

Calendario resultados;
fcalendario = fopen("calendario.txt","r+b");
if(fcalendario == NULL){
printf ("Ha ocurrido un error al abrir el fichero.");
} else {
resultados.golesl = goles_local;
resultados.golesv = goles_visitante;
fseek(fcalendario, (jornada-2)*sizeof(Calendario), SEEK_SET);
fwrite(&resultados, sizeof(Calendario),1, fcalendario);

if(fclose(fcalendario) != 0){
printf("\n\tHa ocurrido un error al cerrar el archivo.");
}
}
}

void main(){
FILE *fcalendario;
int eleccion, opc, jornada=1;

opc = MostrarMenuPrincipal(eleccion);
while(opc > 0 && opc < 6){
switch(opc){
case 1: IrPartido(jornada, fcalendario); break;
}
jornada++;
opc = MostrarMenuPrincipal(eleccion);
}

getch();
}

Etiquetas: fichero, modificar, registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:45.