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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Acceder a una matriz dentro de una estructura ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Acceder a una matriz dentro de una estructura ?  (Leído 5,155 veces)
d00ze13

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Acceder a una matriz dentro de una estructura ?
« en: 2 Enero 2011, 20:09 pm »

Alguien sabe como podria acceder a una matriz dentro de una estructura? os pongo un ejemplo que acabo de hacer para ver si me lo podriais comentar.
Código
  1. #include <iostream>
  2. using namespace std;
  3. struct ejemplo{
  4.       char matriz[5][5];
  5.       };
  6. void llenado(struct ejemplo *disco)
  7. {
  8.     strcpy(disco.matriz[0][1], "a"); /*Aqui es donde querria acceder, pero no me deja*/
  9. }
  10. int main(void)
  11. {
  12.    int asd;
  13.    struct ejemplo llamada;
  14.    llenado(llamada);
  15.    cout<<llamada.matriz[0][1];
  16.  
  17.    cin>>asd;
  18. }
  19.  


En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Acceder a una matriz dentro de una estructura ?
« Respuesta #1 en: 2 Enero 2011, 20:12 pm »

Eso no compila. No estás accediendo adecuadamente a la matriz.
La variable disco es un puntero a struct ejemplo, no es la estructura en sí.
Podés acceder utilizando disco->matriz[][].

El utilizar "->" es lo mismo a utilizar (*disco).matriz[][].
Es decir, para acceder a la matriz, primero tenés que desreferenciar el puntero utilizado.

EDIT: Hay otro error. Le estás pasando a la función "llenado" un struct ejemplo, y lo que en realidad espera es un puntero a un struct ejemplo.
Entonces podés hacer dos cosas. Podes modificar el parámetro de la función, borrándole el asterisco para que no espere un puntero (y compilaría):

Código
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. struct ejemplo{
  5.       char matriz[5][5];
  6.       };
  7. void llenado(struct ejemplo *disco)
  8. {
  9.     strcpy(disco->matriz[0],"a"); /*Aqui es donde querria acceder, pero no me deja*/
  10. }
  11. int main(void)
  12. {
  13.    int asd;
  14.    struct ejemplo llamada;
  15.    llenado(&llamada);
  16.    cout<<llamada.matriz[0];
  17.  
  18.    cin>>asd;
  19. }

O podés referenciar el argumento cuando llamás a la función:

Código
  1. #include <iostream>
  2. using namespace std;
  3. struct ejemplo{
  4.       char matriz[5][5];
  5.       };
  6. void llenado(struct ejemplo *disco)
  7. {
  8.     strcpy(disco->matriz[0], "a"); /*Aqui es donde querria acceder, pero no me deja*/
  9. }
  10. int main(void)
  11. {
  12.    int asd;
  13.    struct ejemplo llamada;
  14.    llenado(&llamada);
  15.    cout<<llamada.matriz[0];
  16.  
  17.    cin>>asd;
  18. }


« Última modificación: 2 Enero 2011, 20:35 pm por Ferno » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acceder a una matriz dentro de una estructura ?
« Respuesta #2 en: 2 Enero 2011, 20:30 pm »

Código
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. struct ejemplo
  5. {
  6.    char matriz[5][5];
  7. };
  8. void llenado(struct ejemplo *disco)
  9. {
  10.     strcpy((*disco).matriz[0], "foro.elhacker.net"); /*Aqui es donde querria acceder, pero no me deja*/
  11. }
  12.  
  13. int main(void)
  14. {
  15.    struct ejemplo llamada;
  16.    llenado(&llamada);
  17.    cout << llamada.matriz[0];
  18. }
  19.  
« Última modificación: 2 Enero 2011, 20:31 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
d00ze13

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: Acceder a una matriz dentro de una estructura ?
« Respuesta #3 en: 2 Enero 2011, 20:39 pm »

muchas gracias por la explicacion, pero funciona solo la ultima que me pusisteis,
lo que no entiendo es este codigo
Código
  1. strcpy((*disco).matriz[0], "foro.elhacker.net");
bueno si que entiendo lo que hace lo que no entiendo es porque se pone matriz[0], no deberia ser matriz[0][1]  para guardarlo en la posicion especifica esa?
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Acceder a una matriz dentro de una estructura ?
« Respuesta #4 en: 2 Enero 2011, 20:51 pm »

No, matriz[0][1] te estás refiriendo a un solo caracter, con matriz[0] trabajas con la cadena entera. Si tu intención era solo modificar un solo caracter entonces no necesitas de strcpy() podrías modificar directamente.


Código
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. struct ejemplo
  5. {
  6.    char matriz[5][5];
  7. };
  8. void llenado(struct ejemplo *disco)
  9. {
  10.     //strcpy((*disco).matriz[0], "foro.elhacker.net"); /*Aqui es donde querria acceder, pero no me deja*/
  11.     disco->matriz[0][1] = 'a';
  12.     (*disco).matriz[0][1] = 'a';
  13. }
  14.  
  15. int main(void)
  16. {
  17.    struct ejemplo llamada;
  18.    llenado(&llamada);
  19.    cout << llamada.matriz[0][1];
  20.    return 0;
  21. }
  22.  
« Última modificación: 2 Enero 2011, 20:53 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Acceder a una matriz dentro de una estructura ?
« Respuesta #5 en: 2 Enero 2011, 20:52 pm »

No pues 0, 1 seria caracter 2 de linea 1
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
EddyW 2 5,781 Último mensaje 14 Agosto 2010, 06:18 am
por EddyW
Matriz Dentro de otra matriz
Programación Visual Basic
moba741120 3 6,706 Último mensaje 13 Abril 2011, 18:29 pm
por raul338
Problema con acceder a una estructura
Programación C/C++
Wd10 4 2,290 Último mensaje 20 Enero 2013, 00:53 am
por Wd10
acceder a estructura puntero dentro de estructura
Programación C/C++
0x46-F 7 3,338 Último mensaje 14 Octubre 2018, 11:55 am
por 0x46-F
¿Como declarar un array dentro de una estructura en MASM?
ASM
Usuario887 2 3,632 Último mensaje 23 Febrero 2021, 23:03 pm
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines