Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AXA en 25 Octubre 2021, 05:42 am



Título: Como uso un *char dentro de un struct?
Publicado por: AXA en 25 Octubre 2021, 05:42 am
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.


Título: Re: Como uso un *char dentro de un struct?
Publicado por: Eternal Idol en 25 Octubre 2021, 11:10 am
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?

Código
  1. clist[0].data[0] = "hola";

¿O una cadena de 20 caracteres? Si era esto ultimo:
Código
  1. 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):
Código
  1. strncpy(clist[0].data, "hola", sizeof(clist[0].data) - 1);
  2. clist[0].data[sizeof(clist[0].data) - 1] = 0;


Título: Re: Como uso un *char dentro de un struct?
Publicado por: AXA en 25 Octubre 2021, 12:05 pm
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.


Título: Re: Como uso un *char dentro de un struct?
Publicado por: Eternal Idol en 25 Octubre 2021, 13:54 pm
De nada.