Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2010, 11:19
abuitrago81
 
Fecha de Ingreso: mayo-2010
Mensajes: 41
Antigüedad: 13 años, 11 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();
}