Hola,
tengo una matriz definida con estructuras tal que
typedef struct{
int filas;
int columnas;
int *datos; //**
}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?
void LerMatriz(Matriz *m)
{
int i=0,j=0;
for(i=0; i<m->filas; i++)
{
for(j=0; j<m->columnas; j++)
{
printf("Valor para M(%d,%d) = ",i+1,j+1);
scanf("%d",*((m+i)+j)); //AQUI ES DONDE NO SE COMO PONERLO
}
}
}
En ese caso habría que poner
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.
Si puedos haz de datos un puntero a puntero y podrás usar de forma natural la notación de array de dos dimensiones.
Al final haciendo scanf("%d",(m->datos)+i*b+j);
me escanea e imprime perfectamente.
Pero gracias pro contestar!