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)
| | |-+  [C]: Scanf punteros (como si fuese P[i][j])
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C]: Scanf punteros (como si fuese P[i][j])  (Leído 2,728 veces)
andie13

Desconectado Desconectado

Mensajes: 29


Ver Perfil
[C]: Scanf punteros (como si fuese P[i][j])
« en: 17 Diciembre 2016, 11:07 am »

Hola,
tengo una matriz definida con estructuras tal que
Código
  1. typedef struct{
  2.    int filas;
  3.    int columnas;
  4.    int *datos; //**
  5. }Matriz;

El caso es que después necesito leer los datos de la matriz, y quiero escanearlos en lo que sería equivalente en un array bidimensional M[fila][columna].

El código sería este:
Mi duda es, en el scanf, para hacerlo correctamente con punteros (también teniendo en cuenta de que pedimos el valor para la posición i+1, aunque deberíamos escanearlo en la 0,0).

Gracias!

Posdata: alguien me puede explicar por qué en la estructura definimos el entero *datos, o sea, que uso se le da?

Código
  1. void LerMatriz(Matriz *m)
  2. {
  3.    int i=0,j=0;
  4.  
  5.    for(i=0; i<m->filas; i++)
  6.    {
  7.        for(j=0; j<m->columnas; j++)
  8.       {              
  9.            printf("Valor para M(%d,%d) = ",i+1,j+1);
  10.            scanf("%d",*((m+i)+j)); //AQUI ES DONDE NO SE COMO PONERLO
  11.       }
  12.    }
  13. }


« Última modificación: 17 Diciembre 2016, 11:09 am por andie13 » En línea

AnthonyS

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: [C]: Scanf punteros (como si fuese P[i][j])
« Respuesta #1 en: 17 Diciembre 2016, 19:48 pm »

En ese caso habría que poner

Código
  1.  scanf("%d",m+i+j);

El compilador a ver que es una variable puntero,la guardaría de forma correcta.

PD: El puntero a enteros datos,
esta para dirigirse a una dirección de memoria que contiene
el entero a utilizar o modificar(o apunta hacia el primer elemento de la matriz).
Espero haberte ayudado.
Un saludo.
Anthony.


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [C]: Scanf punteros (como si fuese P[i][j])
« Respuesta #2 en: 17 Diciembre 2016, 21:29 pm »

Si puedos haz de datos un puntero a puntero y podrás usar de forma natural la notación de array de dos dimensiones.
En línea

andie13

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: [C]: Scanf punteros (como si fuese P[i][j])
« Respuesta #3 en: 18 Diciembre 2016, 00:21 am »

Al final haciendo
Código
  1. scanf("%d",(m->datos)+i*b+j);
me escanea e imprime perfectamente.
Pero gracias pro contestar!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines