Wenasss:
Estaba yo guardando y cargando una partida guardada de mi cuatro en raya, pero me da serios problemas a la hora de cargar el archivo guardado (es largo
pero espero dejarlo bastante claro):
int cargar (char * archivo, Jugprinc * x, Jugadorsec * y)
{
char afirm;
int num;
int i, j;
FILE * f;
f = fopen (archivo, "r");
if (!f)
return ERROR_ABRE;
do
{
num = fscanf (f, "%s", x->jugada.partida);
if (num<10)
return ERROR_ABRE;
/*Estas lineas son basicamente lo mismo que tenia en una unica orden pero separe porque me daban problemas tambien*/
num = fscanf (f, "%d", x->filas);
if (num!=1)
return ERROR_ABRE;
num = fscanf (f, "%d", x->columnas);
if (num!=1)
return ERROR_ABRE;
num = fscanf (f, "%c", x->jugada.ficha);
if (num!=1)
return ERROR_ABRE;
num = fscanf (f, "%c", y->ficha);
if (num!=1)
return ERROR_ABRE;
num = fscanf (f, "%s", x->jugada.nombre);
if (num!=1)
return ERROR_ABRE;
num = fscanf (f, "%s", y->nombre);
if (num!=1)
return ERROR_ABRE;
num = fscanf (f, "%d", x->jugada.turno);
if (num!=1)
return ERROR_ABRE;
for (i=0; i<x->filas; i++) //Se guarda el tablero que se crearia antes de este bucle
for (j=0; j<x->columnas; j++)
{
num = fscanf (f, "%c", x->tablero
[j]);
if (num != 1)
return ERROR_CARGA;
}
do
{
printf ("\n¿Cargar %s? s/n: ", x->jugada.partida);
scanf ("%c", &afirm);
}while ( afirm == 's' || afirm =='n');
}while (afirm == 's');
return OK;
}
Pues bien, el fallo me lo da al tratar de cargar el segundo dato (x->filas) que da un error de esos tan catastroficos de windows de enviar informe de errores... y con el depurador me da una ventana de error de unhanled expresion... acces violation.
Si os sirve el archivo guardado tiene una pinta tal que asi:
Antonieta
12
21
1
X
adsf
fda
0
( 1X1 X )
Lo que hay entre parentesis es la tabla, ya que la mayoria son casillas en blanco, esta toda escrita sin espacios (igual tambien deberia guardarla como 0 de ASCII y no como espacios).
typedef struct
{
char nombre [30];
char ficha;
int turno;
char partida [30];
} Jugadorsec;
typedef struct
{
Jugadorsec jugada;
int filas, columnas;
char **tablero;
} Jugprinc;
Agradeceria cualquier ayuda en este tema. ¿Puedo meter todo el cargado hasta la tabla en una linea como queria al principio o tengo que separarlo como he hecho aqui?