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();
}
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();
}