Antes de main creo lo siguiente:
typedef struct {unsigned short letra[256][16];} Acaracteres; //Una matriz para guardar los datos de los caracteres.
typedef struct {int ancho;
int alto;
unsigned char nombre[20];
int codigo;
Acaracteres *caracteres;} Tiposdeletra; // Otro tipo para los datos de cada tipo de letra.
Tiposdeletra Sletras[20]; // la matriz, o array o arreglo, no se cual es el término mas correcto.
Ahora tengo una matriz llamada Sletras, sin ningún tipo de letra cargado.
Luego, para que que haya al menos un tipo de letra disponible llamo a IniLetra8x8(), que se llama así simplemente por que el primer tipo de letra tiene un ancho y un alto de 8x8 pixels, y le pongo el código 1, con las siguientes líneas de la función:
void IniLetra8x8()
{ int sigcar, cuenta;
Sletras[0].ancho=8;
Sletras[0].alto=8;
// Sletras[0].nombre="ZXSpectrum 8x8";
Sletras[0].codigo=1;
Después reservo la memoria para los datos de los caracteres, de los 256 caracteres que tiene la matriz (caracteres, que en realidad es el puntero) que va dentro de la matriz Sletras, y asigno la dirección a Sletras[0].caracteres
Sletras[0].caracteres=(Acaracteres *)malloc(sizeof(Acaracteres));
Si no me estoy equivocando (que me da que si me estoy equivocando, si no, no habría error al compilar), ahora
Sletras[0].caracteres
es la dirección del primer valor de la matriz de caracteres, a la que yo pensaba que se accedía usando
Sletras[0].caracteres[0][0] hasta llegar al final en Sletras[0].caracteres[255][15]
pero al intentar hacer eso en la función dentro del bucle con
for (cuenta=0; cuenta<256; cuenta++)
{ for (sigcar=0; sigcar<16; sigcar++)
{ Sletras[0].caracteres[cuenta][sigcar]=0; }
}
al compilar me muestra el error:
no match for 'operator[]' in '*(Sletras[0].Tiposdeletra::caracteres + (+(((unsigned int)cuenta) * 8192u)))[sigcar]'
¿Como accedo al área de memoria reservado con malloc y guardado en Sletras[0].caracteres teniendo en cuenta que los 8192 bytes son una matriz de "unsigned short letra[256][16]"? ¿O tengo que usar otro formato al llamar a malloc?
Ese es mi problema.