Yo declaro...
struct tclist { long pred, post;
unsigned char *data[20];
};
tlist clist[1000];
void main(){
clist[1].pred=10;
clist[1].*data="hola";
}
este clist[1].*data no funciona. Yo hice una rutina para cargarlo. pero no hay una forma
directa. y luego para leerla?.
para ETERNAL IDIOL (que sos un idolo), ya resolvi usando cadenas usando este array.
Ya termino el LISP. Uso pocas instrucciones para el agedres. Me falta si esto que pregunto.
El primer indice de un array es el 0.
Las cadenas no son unsigned y o la estructura tiene un puntero (por lo que apunta a memoria que reservas fuera de la misma) o tiene un array de caracteres de un tamaño fijo. En este caso declaraste 20 punteros a unsigned char. ¿Es eso lo que querias?
clist[0].data[0] = "hola";
¿O una cadena de 20 caracteres? Si era esto ultimo:
char data[20];
Tenes que COPIAR la cadena, no asignarla. De esta manera un poco enrevesada se evitan problemas de buffer overflow (seguramente las cadenas de entrada no seran hola siempre ni tendran un tamaño fijo):
strncpy(clist[0].data, "hola", sizeof(clist[0].data) - 1);
clist[0].data[sizeof(clist[0].data) - 1] = 0;
Gracias, ya la habia copiado. Pero tal vez existia otra forma. Me hice mi propia rutina de carga y una variable gloval. que la asigno antes.
De nada.