Hola mi problema es el siguiente yo tengo una estructura
typedef struct{
int x;
int y;
} COORD;
typedef struct{
COORD coord1;
COORD coord2;
char *text;
} TEXTBOX;
En el main yo tengo
TEXTBOX *textbox = malloc (sizeof(TEXTBOX)*1);
y luego hago lo siguiente
textbox[0].coord1.x = 0;
textbox[0].coord1.y = 0;
textbox[0].coord2.x = 100;
textbox[0].coord2.y = 100;
textbox->text = malloc (sizeof (char) * 10); // los textbox pueden tener
hasta 9 letras sin contar el null final
memset(textbox[0].text,'\0',10);//Lo lleno de nulls para limpiar la cadena y asegurarme que las letras que ingrese tengan final
Tecnicamente estoy creando un puntero a un tipo, que es textbox, y luego reservo la memoria para tener uno solo de esos tipos...
Luego digo que el puntero a char, o sea el texto del textbox, reserver en memoria capacidad para 10 chars....
textbox apunta a un tipo TEXTBOX maloqueado en memoria y de ese tipo textbox text apunta a 10 chars maloqueados
esto
textbox[0].text[0]="a";
Me tira error :S No portable pointer conversion :S... no entiendo porque !...
ademas si utilizo el watch y pongo me va devolviendo esto...
textbox[0].text[0]='\0'
textbox[0].text[1]='\0'
textbox[0].text[2]='\0'
textbox[0].text[3]='\0'
textbox[0].text[4]='\0'
ahora bien... si yo hago esto
textbox[0].text="a"
no me tira error, pero se produce algo medio extraño quedando esto
textbox[0].text[0]='a'
textbox[0].text[1]='\0'
textbox[0].text[2]='['
textbox[0].text[3]='f'
textbox[0].text[4]='¿'
como que la memoria se llenara de basura :S...
Sinceramente no entiendo que carajo pasa :S... logicamente esta bien pensado pero algo ta fallando :S
Lo que me da bronca es que yo tambien tengo esto...
typedef struct{
COORD coord1;
COORD coord2;
int cheked;
int pressed;
} CHECK;
typedef struct{
COORD coord1;
COORD coord2;
int elementos;
int frame;
CHECK *check;
} CHECKBOX;
CHECKBOX *checkbox = malloc(sizeof(checkbox)*1);
checkbox[0].coord1.x =0;
checkbox[0].coord1.y =0;
checkbox[0].coord2.x =10;
checkbox[0].coord2.y =10;
checkbox[0].frame = 1;
checkbox[0].elementos = 4;
checkbox->check = malloc(sizeof(CHECK)* checkbox[0].elementos);
for (n=0; n<checkbox[0].elementos; n++){
checkbox[0].check[n]=;
//Aca dentro le meto todos los datos a los checks no es importante
}
Ahora bien el segundo cajo es todavia mas complejo que el primero pero no me tira error de puntero ni nada :S
no entiendo porque no puedo manejar la cadena como vector :S... lo peor es que cuando el puntero a char no esta dentro de una estructura
char *cadena;
cadena = malloc(sizeof(char)*10);
memset(cadena,'\0',10);
cadena[0]="H";
cadena[1]="O";
cadena[2]="L";
cadena[3]="A" ;
ESTO SI ES VALIDO !
PORQUEEEEEEEEEEEEEEEEEEEE
PD: El lenguaje es C :P... y el compilador que uso es el borland turbo c++ 3.0
saludos y gracias de antemano ^^