elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con acceder a una estructura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con acceder a una estructura  (Leído 2,540 veces)
Wd10

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Problema con acceder a una estructura
« en: 19 Enero 2013, 23:46 pm »

Hola a todo el EH, me gustaría saber si podrian ayudarme, mi problema es este:
tengo una estructura:

typedef struct _RE_MORE {
     BYTE      r1;
     BYTE      r2;
     BYTE      r3;
     BYTE      r4;
     WORD      r5;
     WORD      r6;
     DWORD     RX1;
     DWORD     RX2;
} RE_MORE, *LPRE_MORE;


typedef struct _Game02 {
     WORD           re1;
     WORD           re2;
     WORD           re3;
     RE_MORE      remore[1];
} Game02 , *PGame02 ;
 

ahora declaro tengo un puntero de tipo Game02
y quiero acceder al miembro r1:


PGame02  puntero

Variable = puntero->remore[0].r1;


pero en variable no me almacena el valor que esta en r1.

por favor podrian decirme como puedo resolver este problema y cual es la mejor forma de hacerlo? Gracias


« Última modificación: 19 Enero 2013, 23:48 pm por Wd10 » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Problema con acceder a una estructura
« Respuesta #1 en: 20 Enero 2013, 00:24 am »

¿Has puesto a apuntar el puntero hacia la estructura? te dejo un code que funciona:
Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. typedef struct _RE_MORE {
  5.     BYTE      r1;
  6.     BYTE      r2;
  7.     BYTE      r3;
  8.     BYTE      r4;
  9.     WORD      r5;
  10.     WORD      r6;
  11.     DWORD     RX1;
  12.     DWORD     RX2;
  13. }RE_MORE,*LPRE_MORE;
  14.  
  15.  
  16. typedef struct _Game02 {
  17.     WORD           re1;
  18.     WORD           re2;
  19.     WORD           re3;
  20.     RE_MORE      remore[1];
  21. } Game02 , *PGame02 ;
  22.  
  23. int main(int argc, char *argv[])
  24. {
  25.    Game02 game;
  26.    PGame02 gameP = &game;
  27.    int variable = gameP->remore[0].r1;
  28.    printf("Variable %d",variable);
  29.    return 0;
  30. }


En línea

Regístrate en
Wd10

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: Problema con acceder a una estructura
« Respuesta #2 en: 20 Enero 2013, 00:30 am »

Hola gracias por responder, pero a mi no me funciona  :huh:
veras hice este codigo:

#include <stdio.h>
#include <windows.h>
 
typedef struct _RE_MORE {
     BYTE      r1; // 7
     BYTE      r2; // 8
     BYTE      r3; // 9
     BYTE      r4; // 10
     WORD      r5; // 11,12
     WORD      r6;
     DWORD     RX1;
     DWORD     RX2;
}RE_MORE,*LPRE_MORE;
 
 
typedef struct _Game02 {
     WORD           re1; // 1,2
     WORD           re2; // 3,4
     WORD           re3; // 5,6
     RE_MORE      remore[1];
} Game02 , *PGame02 ;
 
BYTE pruebaarray[50] = {1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};



int main(int argc, char *argv[])
{
    PGame02 gameP = (PGame02)pruebaarray;

    int variable = gameP->remore[0].r1;
    printf("Variable %d",variable);
    return 0;
}

hice ese array para ver si de verdad obtenia el valor correcto y no me funciono

En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Problema con acceder a una estructura
« Respuesta #3 en: 20 Enero 2013, 00:42 am »

El problema es el alineamiento de la estructura, todo depende del compilador que utilices, y de los parametros que son pasados al compilador, generalmente los miembros de una estructura se alinean al tamaño de un DWORD, debido a que la accesos a posiciones de memoria por la CPU son más rapido si estan alineados , por eso mismo debes verificarlo, que compilador estas usando?

en VC++ se podes hechar una miraba a /zp
o usar

#pragma pack(push)
#pragma pack(alineamiento)

// Tu estructura

#pragma pack(pop)
En línea

Wd10

Desconectado Desconectado

Mensajes: 11



Ver Perfil
Re: Problema con acceder a una estructura
« Respuesta #4 en: 20 Enero 2013, 00:53 am »

Gracias a todos eso era!  ;-)



Aunque aun no entiendo bien
« Última modificación: 20 Enero 2013, 00:55 am por Wd10 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con estructura if
Java
GAMEOVER2.0 3 2,695 Último mensaje 10 Marzo 2008, 23:45 pm
por GAMEOVER2.0
[C] ? problema con la estructura FOR « 1 2 »
Programación C/C++
dyn4m0_st4rk 10 5,825 Último mensaje 13 Julio 2010, 09:20 am
por leogtz
Acceder a una matriz dentro de una estructura ?
Programación C/C++
d00ze13 5 5,399 Último mensaje 2 Enero 2011, 20:52 pm
por Garfield07
Problema con estructura JSON
Desarrollo Web
marko1985 1 2,778 Último mensaje 26 Febrero 2012, 14:34 pm
por marko1985
acceder a estructura puntero dentro de estructura
Programación C/C++
0x46-F 7 3,821 Último mensaje 14 Octubre 2018, 11:55 am
por 0x46-F
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines